【问题标题】:How to detect a JAR file?如何检测 JAR 文件?
【发布时间】:2011-08-15 22:39:59
【问题描述】:

我如何知道输入流是否为 JAR 文件?

我可以使用以下方法检测 JAR 文件:

try {
  JarFile jar = new JarFile("file");
} catch(ZipException e) {
  // not a jar file
  ...
}

但是如果我只有输入流怎么办?我需要将其写入文件吗?
有什么优雅的方式吗?

【问题讨论】:

  • 看看TrueZip,它为各种压缩/归档文件格式提供了VFS。
  • 从文件格式方面来说,jar文件只是一个zip文件,只是改了名字,固定文件名编码(UTF-8)和一些元数据文件。因此,请使用您使用的任何东西来检测 zip 文件。

标签: java jar inputstream


【解决方案1】:

http://download.oracle.com/javase/1.4.2/docs/api/java/util/jar/JarInputStream.html#JarInputStream(java.io.InputStream)

try {
  JarInputStream jar = new JarInputStream(inputStream);
} catch(Exception e) {
  // not a jar file
  ...
}

【讨论】:

  • 您可能希望提供更新的 JavaDoc 链接。如今,Java 1.4.2 已成为古老的历史。
  • 这个不行。您可以尝试提供一个txt文件并查看结果。
  • 对不起@willpowerforever,我没有尝试,只是想指向类
【解决方案2】:

如果你想做一些智能预过滤,可以找local file header signature byte: 0x04034b50

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-07
    • 2016-07-28
    • 2015-09-19
    • 2019-04-14
    • 1970-01-01
    相关资源
    最近更新 更多