gpt4 book ai didi

java - 在java中提取.gz文件

转载 作者:行者123 更新时间:2023-12-01 11:20:09 24 4
gpt4 key购买 nike

我正在尝试用 Java 解压缩一些 .gz 文件。经过一些研究,我写了这个方法:

    public static void gunzipIt(String name){

byte[] buffer = new byte[1024];

try{

GZIPInputStream gzis = new GZIPInputStream(new FileInputStream("/var/www/html/grepobot/API/"+ name + ".txt.gz"));
FileOutputStream out = new FileOutputStream("/var/www/html/grepobot/API/"+ name + ".txt");

int len;
while ((len = gzis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}

gzis.close();
out.close();

System.out.println("Extracted " + name);

} catch(IOException ex){
ex.printStackTrace();
}
}

当我尝试执行它时,我收到此错误:
java.util.zip.ZipException: 不是 GZIP 格式

我该如何解决?在此先感谢您的帮助

最佳答案

测试一个示例、正确的 gzip 压缩文件,以查看问题是否出在您的代码中。
有许多可能的方法来构建 (g) zip 文件。您的文件的构建方式可能与 Java 的内置支持所期望的不同,并且解压缩器了解压缩变体这一事实并不能保证 Java 也会识别该变体。请使用 file 验证确切的文件类型和/或其他解压缩实用程序,可以告诉您压缩时使用了哪些选项。您也可以使用诸如 hexdump 之类的工具查看文件本身。 .这是以下命令的输出:

$ hexdump -C lgpl-2.1.txt.gz | head

00000000 1f 8b 08 08 ed 4f a9 4b 00 03 6c 67 70 6c 2d 32 |.....O.K..lgpl-2|
00000010 2e 31 2e 74 78 74 00 a5 5d 6d 73 1b 37 92 fe 8e |.1.txt..]ms.7...|
00000020 ba 1f 81 d3 97 48 55 34 13 7b 77 73 97 78 2b 55 |.....HU4.{ws.x+U|
00000030 b4 44 d9 bc 95 25 2d 29 c5 eb ba ba aa 1b 92 20 |.D...%-)....... |
00000040 39 f1 70 86 99 17 29 bc 5f 7f fd 74 37 30 98 21 |9.p...)._..t70.!|
00000050 29 7b ef 52 9b da 58 c2 00 8d 46 bf 3c fd 02 d8 |){.R..X...F.<...|
00000060 da fe 3f ef 6f 1f ed cd 78 36 1b 4f ed fb f1 ed |..?.o...x6.O....|
00000070 78 3a ba b1 f7 8f ef 6e 26 97 96 fe 1d df ce c6 |x:.....n&.......|
00000080 e6 e0 13 f9 e7 57 57 56 69 91 db 37 c3 d7 03 7b |.....WWVi..7...{|
00000090 ed e6 65 93 94 7b fb fa a7 9f 7e 32 c6 5e 16 bb |..e..{....~2.^..|
在这种情况下,我使用标准 gzipthis license text .第一个字节对于 GZipped 文件是唯一的(尽管它们没有指定变体) - 如果您的文件不是以 1f 8b 开头,Java 会提示,不管剩下的内容。
如果问题是由文件引起的,则 Java 中可用的其他解压缩库可能会正确处理格式 - 例如,参见 Commons Compress

关于java - 在java中提取.gz文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40999813/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com