`
wangduowu
  • 浏览: 134505 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

空のjarファイルエントリを作成しています

阅读更多

 

/**
 *
 */
package jarutils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import java.util.zip.ZipEntry;

/**
 * @author dw-wang
 *
 */
public final class JarUtils
              {
                  private static final int BUFFER_SIZE = 4096;
              
                  /**
                   * Utility class - no instances allowed.
                   */
                  private JarUtils ()
                  {
                      // no instances allowed -- provides only static helper functions
                  }
              
                  /**
                   * Extract a jar archive into the base directory
                   * <code>baseDir</code>.
                   *
                   * @param baseDir the root directory where the archive is extracted
                   *        to.
                   * @param archive jar file.
                   * @throws IOException in case of an I/O error.
                   */
                  public static void extractJarArchive (File baseDir, File archive)
                      throws IOException
                  {
                      final JarFile archiveFile = new JarFile(archive);
                      final List archiveEntries = Collections.list(archiveFile.entries());
                      for (final Iterator iterator = archiveEntries.iterator(); iterator
                          .hasNext();)
                      {
                          InputStream in = null;
                          FileOutputStream out = null;
                          try
                          {
                              final ZipEntry e = (ZipEntry) iterator.next();
                              in = archiveFile.getInputStream(e);
                              final File f = new File(baseDir, e.getName());
                              if (e.isDirectory())
                              {
                                  if (!f.exists())
                                  {
                                      if (!f.mkdirs())
                                      {
                                          throw new IOException("Cannot create directory "
                                              + f);
                                      }
                                  }
                              }
                              else
                              {
                                  if (!f.getParentFile().exists())
                                  {
                                      if (!f.getParentFile().mkdirs())
                                      {
                                          throw new IOException("Cannot create directory "
                                              + f.getParentFile());
                                      }
                                  }
                                  out = new FileOutputStream(f);
                                  copy(in, out);
                              }
                          }
                          finally
                          {
                              IoUtil.close(out);
                              IoUtil.close(in);
                          }
                      }
                  }
              
                  /**
                   * Creates a jar archive from the directory.
                   *
                   * @param baseDir for the jar archive.
                   * @param archive the jar file.
                   * @throws IOException in case of an I/O error.
                   */
                  public static void createJarArchive (File baseDir, File archive)
                      throws IOException
                  {
                      JarOutputStream jarArchive = null;
                      try
                      {
                          jarArchive = new JarOutputStream(new FileOutputStream(archive));
                          addFileToJar(baseDir, baseDir, jarArchive);
                      }
                      finally
                      {
                          IoUtil.close(jarArchive);
                      }
                  }
              
                  private static void addFileToJar (File baseDir, File file,
                      JarOutputStream archive)
                      throws IOException
                  {
                      if (file == null)
                      {
                          // done
                      }
                      else if (file.isDirectory())
                      {
                          String path = FileUtils.getRelativePath(baseDir, file);
     (1)(2)(3)(4)   if(!(3)path.equals("/") && !(4)path.equals(""))
                          {
                              if (!path.endsWith("/"))
                              {
     (5)                       path (5)+= "/";
                              }
                              final JarEntry entry = new JarEntry(path);
                              archive.putNextEntry(entry);
     (6)                      archive.closeEntry();
                          }
                          final File[] files = file.listFiles();
                          for (int i = 0; i < files.length; i++)
                          {
                              addFileToJar(baseDir, files[i], archive);
                          }
                      }
                      else
                      {
                          final String path = FileUtils.getRelativePath(baseDir, file);
                          final JarEntry entry = new JarEntry(path);
                          archive.putNextEntry(entry);
                          InputStream in = null;
                          try
                          {
                              in = new FileInputStream(file);
                              copy(in, archive);
                          }
                          finally
                          {
                              IoUtil.close(in);
                          }
                          archive.closeEntry();
                      }
                  }
              
                  /**
                   * Copies the content of the input stream <code>in</code> to the
                   * output stream <code>out</code>.
                   *
                   * @param in input stream.
                   * @param out output stream.
                   * @throws IOException in case of an I/O error.
                   */
                  private static void copy (InputStream in, OutputStream out)
                      throws IOException
                  {
                      final byte[] buffer = new byte[BUFFER_SIZE];
                      int nread;
                      while ((nread = in.read(buffer)) != -1)
                      {
                          out.write(buffer, 0, nread);
                      }
                  }
          }

 

 

Findings in this File

i (1) 159 : 0 method org.jcoderz.commons.util.JarUtils.addFileToJar(File, File, JarOutputStream) makes literal string comparisons passing the literal as an argument
i (2) 159 : 0 method org.jcoderz.commons.util.JarUtils.addFileToJar(File, File, JarOutputStream) makes literal string comparisons passing the literal as an argument
c (3) 159 : 18 Position literals first in String comparisons
c (4) 159 : 39 Position literals first in String comparisons
c (5) 163 : 26 Prefer StringBuffer over += for concatenating strings
w (6) 167 : 0 Empty jar file entry created in org.jcoderz.commons.util.JarUtils.addFileToJar(File, File, JarOutputStream)
分享到:
评论

相关推荐

    verilog2Go

    siンロードしたmsiファイルを実行し,表示にそってインストールする インストールしたbinフォルダにパスを通すGOロジェクトは$ GOPATH / src / github.comの下に作成する インストールのテストを行う &gt; go version ...

    ins绳:Twitterからの自动画像取得ツール

    conf / deny.txtにリスト名を追加コンソールからreins-0.3.5.jarがある场所まで移动し,以下のコマンドを実行java -jar reins-0.3.5.jarラとはディレクトリ配下にやるこンロードファイルが保存されていきます。...

    WYUN_Server

    アプリケーションごとに分离されたロビーと,各ロビーのルーム管理,ルーム内でのクライアント间メッセージングを提供します。 使い方 最早 実行环境として,java 14以上が必要です。环境に合わせ最新のものをインス...

    WinRAR_JP.exe

    RAR, ZIP 書庫を完全にサポートし、 7Z, ACE, ARJ, BZ2, CAB, GZ, ISO, JAR, LZH, TAR, UUE, Z の書庫の解凍をサポートしています。 WinRAR の特徴は、強力な圧縮、分割書庫、暗号化、自己解凍モジュール、バックア...

    lycee-web-library

    lycee-web-library 开発の仕方は以下のような流れ 环境构筑 ...warので,warファイルを実行すれば,サーバーが起动します。 java -jar webapp/build/libs/webapp.jar データベース 数据库ディレクトリ

    MyFleetGirls:KanColle公共视图工具

    MyFleetGirls服务器sbt(sbt-extrasのインストールをお勧め)とMariaDBをインストール服务器/ lib以下にから库のjarを入れる(以下のLibでも可) MariaDBにmyfleetという名前の数据库を作成。utf8を有效化する(いく...

    start_kotlin:启动kotlin

    -incrund-runtimeオプションは,生成された.jarファイルにKotlinランタイムライブラリを含をとで,自己完结型で実行可能なファイルにします。 kotlinc hello.kt -include-runtime -d hello.jar $ java -jar hello....

    BrainTsusu:「つ」「す」「う」の三文字だけでProgrammingができちゃう!

    すす, すう[ うつ] うす[オリジナル]うう =&gt; 数字として出力まて =&gt; ポインタのさす値ds停止如何使用上のBrainTsusu.jarを下载。ターミナルからjarのあるとこまでcdして実行してください。ファイルを指定する场合,...

    Spring样品

    が気軽にーバーサイドエンジニアが気軽にvue.js + spring-bootでSPA开発するためにはどうしたらいいか,という话。 登场するコンポーネントは以下のものたち。 spring-boot(JavaのWeb应用程序框架) webpack...

    关于JAI的两个JAR文件jai_codec.jar和jai_core.jar的最新版本

    在给定的压缩包中,我们关注的是两个关键的JAR文件:`jai_codec.jar`和`jai_core.jar`。 `jai_codec.jar`是JAI的编码库,它提供了对多种图像编码格式的支持,例如TIFF(Tagged Image File Format)、JPEG、PNG等。...

    Minecraft-shell:s0baco的Minecraft Server Shell脚本

    我的世界 Minecraft的Shell脚本。 Vanilla Saba也要求备份,因此我也在制作备份外壳。我认为如果定期使用cron可以运行。 服务器的文件名和备份目录... サーバーのjarファイルをダウンロードする。 # 以下のサンプルで

    iPLAss:基于Java的企业级开源低代码开发平台-java source code

    エンタープライズクラスのシステム开発における生产性向上を主目的とした,javaベースのローコード开発プラットフォームです。 码头工人 &gt; docker pull iplass/iplass-standalone &gt; docker run -p 8080:8080 -e ...

    msbase.jar,mssqlserver.jar,msutil.jar

    标题中的"msbase.jar,mssqlserver.jar,msutil.jar"是Microsoft SQL Server JDBC驱动程序的主要组成部分。这些Java归档(JAR)文件是用于在Java应用程序中与Microsoft SQL Server数据库进行交互的关键组件。 JDBC...

    derby_study:使用Derby实现数据库连接

    # gitリポジトリをクローンしてフォルダ内に移動 git clone https://github.com/MasaoBlue/derby_study.git cd derby_study 在下面的derby_study目录下derby_study 数据库初始化 # FlywayでDBマイグレーションの...

    jstl1.1.jar和standard1.1.jar

    (另外,实际操作的时候发现JSTL1.2.jar和JSTL1.1.jar这2个包放一起可以在tomcat5.5和tomcat6.0上跑,鉴于JSTL1.1.jar里面没有c.tld等文件,猜测JSTL1.1.jar里面只是放置了1.1的专用的类和信息)

    javaee.jar,jsf-api.jar,jsf-impl.jar,jstl-1.2.jar

    在给定的文件列表中,我们可以看到四个关键的JAR(Java Archive)文件,它们在Java EE应用开发中扮演着重要角色: 1. **javaee.jar**:这是Java EE的API库,包含了Java EE规范定义的所有接口和类。开发者可以通过这...

    javax.jar 包免费下载

    javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar javax.jar ...

    tugidigi-web:次世代デジタルライブラリーのwebアプリケーションです(下一个数字图书馆的程序。)

    下一代数字图书馆的后端是基于spring-boot的Single Jar应用程序。 需要 JDK(1.8或更高版本) 阿帕奇Maven 用于数据库和文本搜索的 (在6.6.1上工作) 用于图像相似性搜索 建立 cd back mvn clean install cp -R ...

    axis2所有的jar

    axiom-api-1.2.12.jar, axiom-impl-1.2.12.jar, axis.jar, axis2-adb-1.6.2.jar, axis2-kernel-1.6.2.jar, axis2-transport-http-1.6.1.jar, axis2-transport-local-1.6.1.jar, commons-codec-...

    activation.jar和mail.jar和tools.jar

    在Java开发领域,尤其是涉及到Web服务和服务器配置时,`activation.jar`、`mail.jar`和`tools.jar`是三个非常关键的库文件。在本篇文章中,我们将深入探讨这三个库文件的作用,以及它们如何在Tomcat服务器和Axis Web...

Global site tag (gtag.js) - Google Analytics