- ベストアンサー
javaの文字化け
自分はプログラミング初心者です。以下のようなプログラムで新しいメモ帳ファイルに数字を出力しようとすると文字化けしてしまいます。どうすれば文字化けを直せるのでしょうか? よろしくお願いします。 import java.io.*; class Number { public static void main(String args[]) { try { FileOutputStream fos = new FileOutputStream(args[0]); DataOutputStream dos = new DataOutputStream(fos); int count = 0; int j = 1; do { dos.writeShort(j); j += 3; } while(++count < 15); fos.close(); } catch(Exception e) { System.out.println("Exception: " + e); } } }
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
私もJavaは久しぶりで忘れてしまいましたが、以下のようにしたら成功しました。 import java.io.*; class Number { public static void main(String args[]) { try { FileWriter fw = new FileWriter(args[0]); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); int count = 0; int j = 1; do { pw.println(j); j += 3; } while(++count < 15); pw.close(); bw.close(); fw.close(); } catch(Exception e) { System.out.println("Exception: " + e); } } } 基本的にファイルに書き出すときはFileWriterクラスを使います。話がそれますが、#1様がおっしゃるようにOutPutStreamクラスはデータをバイナリ表現で送ります。テキスト表現ではないです。その辺のところはまあ難しいですが、2進数だか8進数だか16進数で書いているとおもいます。 話が戻りますが、BufferedWriterクラスはメモリに効率よくデータを読み込んで書き込みします。引数にはFileWriterクラスとか色々?使われます。PrintWriterクラスはこの場合、BufferedWriterクラスを引数にしますが、便利にファイルに書き込みできるメソッドを持っています。printlnメソッドだと改行してくれます。 まあ、基本的なファイル読み込み書き込みはFileWriterやらFileReaderクラスを使い、より効率的にメモリにアクセスするためにBufferedWriterやらBufferedReaderクラスを使用し、さらに書き込みの場合はPrintWriterクラスを使用して便利に書き込みます。ちなみにPrintReaderクラスはないです。 最初のうちは本のサンプルを丸写しでやっていってある程度のプログラムをどんどん作っていくうちになんとなく分かってきます。 では、がんばってください。私もここの回答者様たちに比べれば全然です・・
その他の回答 (1)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
バイナリで出力しているからある意味当然だと思う。 文字として出力したかったのだったら、普通に書き出せばいいと思います。 勘違いしてたらすみません。
お礼
あいがとうございます。バイナリについて勉強しようとおもいます。
お礼
うまくいきました。素人なのでクラスなどのことはまだよくわかりませんが、これから勉強していきたいと思います。 どうもありがとうございました。