|
分類:[Java]
OS:Vista 使用言語:Java 開発環境:Eclipse3.2
会話ゲームの一部で、
1.テキストファイルから一行を読み取る
2.行の先頭のトークンを切り取る
3.切り取ったトークンを整数に変換する
というメソッド(@)があり、それとは別に
テキストファイルを出力するメソッド(A)
があるのですが、以下の問題が発生しました
T.テキストファイルを手動(メモ帳)で作成すると
Aで出力する際に日本語が文字化けする
U.プログラム(FileOutputStream)でテキストファイルを作ると
文字化けはしないが、@の3の手順で
NumberFormatExceptionが発生する
(FileWriterで作成した場合も同じ結果でした)
「文字化け」と「Uのエラー」それぞれの解決法は
見つかったのですが、同時に解決する方法がわかりません
何かいい方法があったら教えてください
ーーーーー実行結果
(answerが手動で作ったファイル,testがプログラムから作ったファイル(出力結果))
(zeroは「String zero="0"」,sは切り取ったトークン (文字コード))
answer
0,�E�E�E,�E�E�E�H,�H,�H�H�H,
1,�͂�,
2,������,
zero:48
s:48
test
0,・・・,・・・?,?,???,
1,はい,
2,いいえ,
zero:48
s:65279
Exception: java.lang.NumberFormatException: For input string: "0"
ーーーーーソース
・@(try-catch 文内部)
FileInputStream fis=new FileInputStream(file);
InputStreamReader ir=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(ir);
StringTokenizer st;
String str,s;
while((str=br.readLine())!=null){
int c;
st=new StringTokenizer(str,",");
s=(String)st.nextElement();
String zero="0";
System.out.println("zero:" + (int)(zero.charAt(0)));
System.out.println("s:" + (int)(s.charAt(0)));
c=Integer.valueOf(s).intValue();
if(c==code){
flag=true;
break;
}
}
・A(try-catch 文内部)
FileInputStream fis=new FileInputStream(file);
InputStreamReader ir=new InputStreamReader(fis);
BufferedReader br=new BufferedReader(ir);
String s;
while((s=br.readLine())!=null){
System.out.println(s);
}
br.close();
ir.close();
fis.close();
ーーーーーテキストファイルの中身(両方)
0,・・・,・・・?,?,???,
1,はい,
2,いいえ,
|