2010-11-29 7 views
0

私はこの方法に問題があります。 24時間ごとに(午前3時に)呼び出され、ファイルを圧縮する必要があります。初めて、正しく動作します。 2番目のループでは、zipファイルは最大4 MBまでしか成長しません(1,5 GBにする必要があります)。何が間違っていますか? (私の悪い英語のために申し訳ありません)。コードは次のとおりです。Zipファイルはすべて24時間

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

「第2ループで」第2ループは何ですか? –

+0

1日目のzipファイルの内容が壊れているか不完全ですか? –

+0

「第2のループ」とは、メソッドが呼び出される2回目のことを意味すると思います。 –

答えて

0

起動時にdesfileとsrcfileは同じですか?

もしそうなら、あなたのコードはdesfileをsrcfileからのzipデータで置き換え、新しいファイルをこのファイルに追加しません。その状態で、目的のファイルサイズがそれほど増えているはずですか?

+0

srcfileは常に同じですが、desfileはそれぞれのtループで異なります... – Andi

0

ストリームinとin2はこのスニペットで閉じられません。たぶんsrcfileはこのメソッドの最後の実行で開かれ、このファイルの2回目の開けは失敗するでしょうか?