我遇到了这个方法的问题。它将在每24小时(凌晨3点)调用,并应压缩文件。第一次,它正常工作。在第二个循环中,zip文件只能增长到4 MB(应该是1,5gb)。我错了什么? (对不起,我的英语不好)。这是代码:
private static void zipFile(String srcfile, String desfile) throws IOException {
FileInputStream in = new FileInputStream(srcfile);
BufferedInputStream in2 = new BufferedInputStream(in);
FileOutputStream out = new FileOutputStream(desfile);
GZIPOutputStream zipOut = new GZIPOutputStream(out);
BufferedOutputStream out2 = new BufferedOutputStream(zipOut);
int chunk;
appendLog("start zip...");
while ((chunk = in2.read()) != -1) {
out2.write(chunk);
}
out2.close();
zipOut.close();
out.close();
appendLog("zipping file done: " + desfile);
}
答案 0 :(得分:0)
每次启动时desfile和srcfile是否相同?
如果是这样,你的代码每次调用时都会用srcfile中的压缩数据替换desfile,而不是将新数据附加到这个文件中。在这种情况下,您确定目标文件大小应该增加那么多吗?
答案 1 :(得分:0)
此片段中未关闭in和in2中的流。也许srcfile是在最后一次运行此方法时打开的,而第二次打开此文件失败了?