zipファイルに含まれるテキストファイルの内容を変更して、zipに再び戻して、保存したいのですが、
元のファイルの内容がSJISの場合、zipに戻すと問題が発生します。
zipファイルを解凍して、テキストファイルを開くと、文字化けしてしまいます。
SJISで作られてデータをUTF-8で保存しているため、
テキストエディタ等で、「文字コードを指定」して開いても文字化けしていました。
zip
1aaa.zip┬abc.txt SJISで作成されたファイル 2 └def.txt UTF-8で作成されたファイル
処理としては、ZipInputStreamでzipファイルを読み込んで、内容を変更後、ZipOutputStreamでzipに戻しています。これによって、作成されたzipファイルを解凍して、テキストファイルを開くと文字化けしています。
java
1FileOutputStream fos = new FileOutputStream(outfile); 2FileInputStream fis = new FileInputStream(infile); 3BufferedOutputStream bos = new BufferedOutputStream(fos); 4ZipOutputStream out = new ZipOutputStream(bos); 5ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis)); 6InputStreamReader isr = new InputStreamReader(zis,"UTF-8"); 7BufferedReader br = new BufferedReader(isr);
Javaの文字コードは、UTF-8だと思うので、何も指定しないと、UTF-8で保存されてしまいます。
文字コードを意識する必要もなく、byteコードで読み込んでbyteコードで出力すれば、
文字化けしないのではないかと思うのですが、ZipOutputStream以外に、どんなクラスを使うのが適切なのでしょうか。byteコードで入出力できるzipクラスはありますでしょうか。
あなたの回答
tips
プレビュー