2

学校のプロジェクト JDK 1.7 を 1.6 に切り替える必要がありました。プラットフォーム 1.6 で新しいプロジェクトを作成し、プロジェクトにパックされたものをすべてコピーしましたが、1.6 はこの種のバッファ付きリーダーをサポートしていないようです。src のファイルから読み取る必要があります。スキャナーを使えば大丈夫ですか?

try (BufferedReader br = new BufferedReader(new FileReader(sDataPath))){

Error " Resource specification not allowed here for source level below 1.7" 
4

2 に答える 2

8

それは問題ではなく、BufferedReaderJava 7 で導入されたtry-with-resources ステートメントです。リーダーを手動で閉じる必要があります。

BufferedReader reader = new BufferedReader(new FileReader(sDataPath));
try {
    ...
} finally {
    reader.close();
}

余談ですが、使用しないことをお勧めますFileReader-エンコーディングを指定できるようにInputStreamReaderラップを使用します。FileInputStream

ああ、外部ライブラリの使用が許可されている場合は、Guavaを使用するとリソースの処理が簡単になることに気付くかもしれません :)

于 2012-04-12T19:53:34.663 に答える
3

Java 7 では、そのtry()構造を使用してリソースを自動的に破棄できます。Java 6にはそれがありません。次のように書く必要があります。

BufferedReader br=null
try {
    br = new BufferedReader(...); // create and use BufferedReader here
}
finally {
    if(br!=null) br.close();
}
于 2012-04-12T19:54:32.877 に答える