前提・実現したいこと
スッキリJava入門[実践編]本を見て、コードを打っております。
ファイルの圧縮ソフトの作成で、テキストの回答とほぼ同じコードで試したのですが、開くと文字化けになってしまいます。
内容としましては、
ファイル名:~.Copy.txtから、ファイル名:~Copy2.txtにコピーしたものを、
GZIPOutputStreamを使って圧縮するというものです。
GZIPOutputStreamを使用しないで、ただコピーするだけであれば、Copy2のファイル上では文字化けせずに表示されます。(こちら、Eclipseのコンソール上では文字化けになってしまうのですが、併せて伺えればと思いまます。以下コードのSystem.out.println(c +"を読込み、コピーします");の部分です)
発生している問題・エラーメッセージ
①ファイルをコピーした時の、コンソール上の文字化け(コピーされたテキストファイル(Copy2)は文字化けは起こっておりません)
②GZIPOutputStreamを使用すると、コピーされたテキストファイルも文字化けしてしまいます
該当のソースコード
Java
1public class Main2 { 2 3 public static void main(String[] args) throws Exception{ 4 FileInputStream fis = null; 5 GZIPOutputStream gzos = null; 6 7 try { 8 FileOutputStream fos = new FileOutputStream("~FileCopy2.txt"); 9 BufferedOutputStream bos = new BufferedOutputStream(fos); 10 fis = new FileInputStream("~FileCopy.txt"); 11 gzos = new GZIPOutputStream(bos); 12 13 //一文字ずつ読み込んでいく 14 int fisi = fis.read(); 15 while(fisi != -1) { 16 char c = (char)fisi; 17 System.out.println(c +"を読込み、コピーします"); 18 bos.write(c); 19 fisi=fis.read(); 20 } 21 System.out.println("成功しました"); 22 bos.flush(); 23 bos.close(); 24 fis.close(); 25 26 }catch(IOException e) { 27 System.out.println("失敗しました"); 28 try { 29 if(fis != null) fis.close(); 30 if(gzos != null) gzos.close(); 31 }catch(IOException e2) {} 32 } 33 } 34 35} 36 37
プログラミング初心者なので、お手数ですができるだけかみ砕いたご説明をいただけると助かります。
回答1件
あなたの回答
tips
プレビュー