解压缩(解压缩)由.net压缩(解压缩)的文件.net system.io.compression.gzipstream
我有一个使用system.io.compression.gzipstream
库的.net应用程序压缩(zip)的文件。 我试图在java中使用java.util.zip.GZIPInputStream
进行解压缩(解压缩)。 扔:解压缩(解压缩)由.net压缩(解压缩)的文件.net system.io.compression.gzipstream
java.io.EOFException的 在java.util.zip.GZIPInputStream.readUByte(GZIPInputStream.java:246) 在java.util.zip.GZIPInputStream.readUShort(GZIPInputStream.java:237 ) 在java.util.zip.GZIPInputStream.readUInt(GZIPInputStream.java:229) 在java.util.zip.GZIPInputStream.readTrailer(GZIPInputStream.java:197) 在java.util.zip.GZIPInputStream.read(GZIPInputStream的.java:92) 在java.io.FilterInputStream.read(FilterInputStream.java:90) 在juwdemoproj.FileWriterTest.gunzipIt(FileWriterTest.java:353) 在juwdemoproj.FileWriterTes t.main(FileWriterTest.java:51)
我的示例代码:
public static void gunzipIt() {
byte[] buffer = new byte[1024];
String zipFilePath = "C:\\Juw\\JR\\file\\output\\020030214112016.zip";
String destDirectory = "C:\\Juw\\JR\\file\\output\\targetUnzip";
try {
GZIPInputStream gzis =
new GZIPInputStream(new FileInputStream(zipFilePath));
FileOutputStream out = new FileOutputStream(destDirectory);
int len;
while ((len = gzis.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
gzis.close();
out.close();
System.out.println("Done");
} catch (IOException ex) {
ex.printStackTrace();
}
}
问: - 是否有可能在解压的java文件,当文件是由.NET压缩应用? - 任何可以达到上述要求的zip库?
谢谢
我使用这段代码,它解决了我的问题。
public void gunzipIt(){
byte[] buffer = new byte[1024];
boolean isValid = true;
try{
GZIPInputStream gzis =
new GZIPInputStream(new FileInputStream(INPUT_GZIP_FILE));
FileOutputStream out =
new FileOutputStream(OUTPUT_FILE);
while (isValid) {
int len;
try{
len = gzis.read(buffer);
}catch(Exception ex){
len = 0;
isValid = false;
}
if (len > 0) {
out.write(buffer, 0, len);
}else{
isValid = false;
}
}
gzis.close();
out.close();
System.out.println("Done");
}catch(IOException ex){
ex.printStackTrace();
}
}
在文件的最后有一个空字符串,所以它抛出错误。我从我的同事那里得到这个代码,它工作。
ZIP和GZip是两种不同和不兼容的格式。我建议你打开.zip作为ZIP而不是.gz文件。 –
@PeterLawrey嗯,OP确实说它是使用.NET的'gzipstream'压缩的,所以它可能只是文件扩展名是错误的。无论哪种方式,OP似乎混淆了Zip与GZip,因为压缩文件应具有'.zip'文件扩展名,并且gzip文件应该具有'.gz'文件扩展名。 – Andreas
hi @PeterLawrey,是的我的客户端将它保存为.zip文件扩展名,但他们使用gzipstream库。我可以在他们的代码中看到它。 – cumibulat