我有一个使用system.io.compression.gzipstream
库由.net应用程序压缩(zip)的文件。
我尝试在java中使用java.util.zip.GZIPInputStream
解压缩(解压缩)它。
它扔了:
java.io.EOFException的 at 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.FileWriterTest.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();
}
}
问题: - 当文件被.net应用程序压缩时,是否可以在java中解压缩文件? - 任何可以达到上述要求的zip库?
由于
答案 0 :(得分:0)
我使用此代码并解决了我的问题。
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();
}
}
在文件的末尾有一个空字符串,所以它抛出错误。我从我的同事那里得到了这个代码并且它有效。