Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

javaでのテキストファイルの読み込みについて

プログラム初心者のため至らぬ点が多々あると思いますが
ご了承ください。

開発環境はWindows7(64bit)でEclipseを使用。
int型で定義したListに対して以下のようにテキストファ
イルを読み込んでいます。

************************************
import java.io.FileReader;
import java.util.ArrayList;

try{
File txt = new File(TextFile);
BufferedReader br = new BufferedReader(new 
FileReader(txt));
String line = "";
while((line = br.readLine()) != null){
ListA.add(Integer.parseInt(line));
}
br.close();
}catch (FileNotFoundException e){
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
************************************

TextFileはWindowsのメモ帳で作成したもので
1
2
3
にように数値が1行ごとに記入されています。
文字コードはUTF-8。

この時、プログラムを実行すると
ListA.add(Integer.parseInt(line))の部分に
java.lang.NumberFormatException:For input string:"1"
とエラーが表示されます。
while文で1行目のみ無視して読み込むと残りのテキストは
正常に読み込まれます。
テキストファイルを書き換えて見たりしたものの必ず1行
目のみint型で読み込んでくれません。

原因は何なのでしょうか?
もしお心当たりがあればお教えください。

4

回答

4054

閲覧

4件の回答

評価

0

すいません。自己解決しました。
Windowsのメモ帳でUTF-8のテキストを作成した場合、BOMが追
加される使用だったようで、それが原因でした。
BOMの削除を行うと問題なく実行できました。

評価

0

>ご了承ください。
了承してもらう話じゃない。
わざわざ初心者であることを書く必要はない。

>int型で定義したList
int型でListを作ることはできない。
自分が書いているものをちゃんと説明する。

>原因は何なのでしょうか?
質問する際は、自分がどんなことを調べて、何を試してみ
たのかを書いてみることだ。
でないと、エラーが出たから質問しようと考えた(何もし
ていない)ように見える。
ここは、単純に質問したら答えが返ってくる場所ではない
んだ。

>java.lang.NumberFormatException:For input string:"1"
この一文をそのままGoogleに貼り付けて検索するだけで
も、色々と情報が得られるはずだ。

評価

0

おっと、一足違いだったか。
自己解決できたならそれが一番だし、原因もちゃんと書いて
あるのは、模範的。

Java(の標準テキスト読み書き)はBOM無UTF-8しかサポート
していないのが原因であり、そしてJavaの標準ライブラリの
問題でもあるんだよな。

評価

0

これ俺も同じ目に合って2日くらい悩んだ。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。