【发布时间】:2014-06-03 06:55:56
【问题描述】:
我尝试使用 ZipInputStream/ZipOutputStream 将一些文件从服务器发送到客户端。
在服务器端,一切顺利,但在客户端,当我想解压时,文件的大小是-1
所以它失败了。我应该怎么做?为什么会这样?
socket = new Socket("127.0.0.1",3000);
String outDir = "C:\\here";
BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
ZipInputStream zips = new ZipInputStream(bis);
ZipEntry zipEntry = null;
while(null != (zipEntry = zips.getNextEntry())){
String fileName = zipEntry.getName();
File outFile = new File(outDir + "/" + fileName);
System.out.println(outFile.getName()+" "+zipEntry.getCompressedSize());
if(zipEntry.isDirectory()){
File zipEntryFolder = new File(zipEntry.getName());
if(zipEntryFolder.exists() == false){
outFile.mkdirs();
}
continue;
}else{
File parentFolder = outFile.getParentFile();
if(parentFolder.exists() == false){
parentFolder.mkdirs();
}
}
System.out.println("ZipEntry::"+zipEntry.getCompressedSize());
FileWriter fW=new FileWriter(outFile);
try (BufferedWriter bfW = new BufferedWriter(fW)) {
bfW.write(zips.getNextEntry().toString());
}
}
socket.close();
}
zipEntry.getCompressedSize(); 的结果等于 -1。但是在将它写入服务器中的套接字之后,我检查了大小,它是实际大小。所以我感到困惑。
IDE 给出的异常是错误在客户端无效存储块长度
【问题讨论】:
-
@JqueryLearner 为什么为空?如果你仔细阅读代码,它已经被nextentry填充了
标签: java file exception client-server