ファイル圧縮について質問させてください。
以下のようなメソッドを作成したのですが、
public run(String strFiles[], String strZipFileName) {
inti = 0;
int iLen = 0;
FileInputStream fis = null;
FileOutputStream fos = null;
ZipOutputStream zos = null;
ZipEntry zent = null;
byte[] buf = new byte[1024*10*10];
try {
fos = new FileOutputStream(strZipFileName);
zos = new ZipOutputStream(fos);
for (i = 0; i < strFiles.length(); i++) {
fis = new FileInputStream(strFiles[i]);
zent = new ZipEntry(strFiles[i]);
zos.putNextEntry(zent);
while (-1 != (iLen = fis.read(buf))) {
zos.write(buf, 0, iLen);
}
zos.flush();
zos.closeEntry();
fis.close();
}
} catch(Exception e) {
System.err.println(e);
} finally {
try {
zos.close();
// ※1
fos.close();
// ※2
} catch(Exception e) {
System.err.println(e);
}
}
}
サイズの小さいファイルや、
特定のサイズのファイル(13k程度)を対象とした時、
高い確率で、空の圧縮ファイルが作成される事があります。
ログを出力しながら確認すると、このような現象が起きた場合、
圧縮ファイルをcloseする直前(※1)では作成されたファイルはサイズがあるのですが、
圧縮ファイルをcloseした直後(※2)ではファイルのサイズが0になってしまいます。
また、2台あるサーバの内、1台だけでこの現象が起こっています。
javaのバージョンは1.3です。
何故このような現象が起こってしまうのか、
ご存知の方がいらっしゃいましたら教えていただけないでしょうか。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
実は、その現象3,4年前に自分も同じように苦しんだ記憶が
あります。
結局、原因がわからず、何か他の対策をして逃げたんですが、、
最後は、何やったか、よく憶えてません(--;
色々やったんで、、。
たぶん、ファイルが消える場合は
dummy.txtみたいな余分なファイルをzipに入れて
解決?した気がする、、。
(複数ファイルなら消える現象が起こらなかった、、はず)
まあ、昔の記憶なのでハッキリ憶えてません。
(コードも無いです)
何にせよ、仕様って事で許してもらいました(=-=;
ありがとうございます。
サーバを再起動したら現象が発生しなくなりました。
結局原因はわからぬままですが、
サーバ自体にも問題があったようです(win2003server)
どちらにせよ、close処理が正常に行われなかったので
例外かエラーが発生しても良いと思うのですが・・・。
色々とありがとうございました。
No.1
- 回答日時:
まったく関係ないかもしれませんが(=w=;
http://java.sun.com/j2se/1.3/ja/ReleaseNotes.htm …
#4764567
この現象で、アプリ自体が落ちて正常にcloseされなかったため、ファイルが消えたとか、。
この回答への補足
ありがとうございます。
拝見させていただきました。
OutputStream.close() メソッドの潜在バグ、
結果としてアプレットがハングアップしてしまうと記載されているので、直接関係は無さそうなのですが、
akanekorさんの仰る通り、このバグの影響でclose処理が上手く機能していない可能性もありそうですね。
詳細なバージョンを確認してみることにします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 画像編集・動画編集・音楽編集 連続質問です 動画ファイルの圧縮時のビットレートというのについて教えてください 2 2023/08/06 11:50
- C言語・C++・C# C# で、あるフォルダー内にあるすべてのテキストファイルを別のフォルダーにコピーする。 4 2022/11/21 13:23
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【VBA】印刷マクロのループ処理が反映されません 3 2022/08/09 02:15
- PDF PDFファイルの圧縮 1 2022/10/04 13:48
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
exeファイルをデータ転送サービ...
-
CSSを1ページに1枚作るのって変...
-
#include <Windows.h>というヘ...
-
Word VBA MSGBOX 内で降順表示
-
パイソンでpy ファイルと p...
-
C# OpenFileDialog
-
ファイル構造が破損しているフ...
-
Access のファイルの「安全でな...
-
外部ファイルの数値を合計計算...
-
binファイルを解凍したいの...
-
Latexで図番号だけを「図1.1」...
-
ファイルは何で構成されている...
-
C#でファイルに書き込める行数...
-
Windows10のScilabのV6.1.1に関...
-
ビットマップの扱い方
-
warファイルをEclipseでプロジ...
-
コマンドプロンプトで作成日時...
-
iniファイル
-
exeファイルの中身を見る方法は...
-
ドラッグしたファイルのパスを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセス 壊れた? 「ファイ...
-
#include <Windows.h>というヘ...
-
Latexで図番号だけを「図1.1」...
-
binファイルを解凍したいの...
-
.NETアプリを作ったときの .man...
-
ファイル構造が破損しているフ...
-
2つのファイルのバイナリをコン...
-
CSSを1ページに1枚作るのって変...
-
Word VBA MSGBOX 内で降順表示
-
公文書のxmlファイルの開き方が...
-
jarファイル
-
バッチ処理で追記コピーしたい
-
自分で作成した重要ファイルを...
-
ファイルは何で構成されている...
-
exeファイルをデータ転送サービ...
-
リンクの張り付けかたを教えて...
-
exeファイルの中身を見る方法は...
-
参照するファイルをワイルドカ...
-
CRCが一致する確率
-
C言語---ファイルに出力したデ...
おすすめ情報