明確にするために: Eclipseからのメッセージのためにコンパイルすらできません。最初のコードスニペット:input
とinputBuffer
は認識されません。2番目のコードスニペット、Eclipseはスイッチ「コンプライアンスとJREを1.7に切り替える」を要求しています
私はtry-with-resourcesを初めて使用しますが、構文や間違っていることを完全に理解することはできません。これが私のコードです
try {
FileReader input = new FileReader(this.fileName);
BufferedReader inputBuffer = new BufferedReader (input);
String line;
while ((line = inputBuffer.readLine()) != null) {
String[] inputData = line.split(",");
Node<Integer> newNode = new Node<Integer>(Integer.parseInt(inputData[0]),
Integer.parseInt(inputData[1]));
this.hashMap.add(newNode);
}
//inputBuffer.close();
//input.close();
}catch (NumberFormatException nfe){
System.out.println(
"Repository could not load data due to NumberFormatException: " + nfe);
}catch (FileNotFoundException fnfe) {
System.out.println("File not found, error: " + fnfe);
}finally {
inputBuffer.close();
input.close();
}
最後のブロックが機能しないので、試してみたかった
try (FileReader input = new FileReader(this.fileName)) {
......
}catch (FileNotFoundException e) {
......
}finally {
inputBuffer.close();
input.close();
}
でも
また、BufferedReaderを
try (...)
...に追加する必要がありますが、どうすればよいですか?また、これには「コンプライアンスとJREを1.7に切り替える」必要があります。それが何を意味し、それが私のプログラムにどのように影響するかは今のところわかりません。誰かがそれが何を意味するのかを説明するか、私が何か間違ったことをしているのかどうかを説明するまで、私はそれをしたくありません。
編集
tryブロックの前に宣言を移動し、nullで初期化しましたが、これは「OK」ですか?
FileReader input = null;
BufferedReader inputBuffer = null;
try {
input = new FileReader(this.fileName);
inputBuffer = new BufferedReader (input);
...
} ...