Nitesh Regmi:
ここでのコードは、その警告を与えますResource leak: 'f' is never closed
。私は近いtryブロック内でfの場合、それは動作しますが、それは私の場所ならばf.close()
最終的には内側が、それは動作しませんブロックします。これは、エラーを示してf cannot be resolved
。だから問題は何ですか?
プログラムは、ユーザからの入力を取得し、.docファイルに保存することになっているので、同じファイルからデータを読み込み、それをプリントアウト。それはすでに明白でなければ、私は、Javaを勉強しています。
コードの作品だから、私は警告があることに気づいf
クローズされません。私が入れf.close()
に声明をfinally
ブロック。それはそこにエラーが表示されます。
CLOSE文は、それがであるときに実行されるtry
ブロックが、認識できないf
でfinally
ブロック。
try {
RandomAccessFile f = new RandomAccessFile("E:\\emp.doc","r");
for (i = 0; i < size; i++) {
id1[i] = f.read();
name[i] = f.readUTF();
add[i] = f.readUTF();
sal[i]=f.readDouble();
if (sal[i] > 25000) {
System.out.println("ID:" + id1[i] + "\nName: " + name[i] +
"\nAddress:" + add[i] + "\nSalary" + sal[i]);
}
}
} catch (Exception ex) {
ex.printStackTrace();
}//finally {
// f.close();
//}
だから、コードで、私は置いていない場合はfinally
、プログラムが動作しますが、ブロックを示し、警告f
閉じていないが。
私が入れしようとした場合close
の内部でtry
ブロック後、警告はありません。
私は置けばしかし、close
内部のfinally
ブロックエラーがありますf cannot be resolved
。
それでは、私は警告に対処するためにしなければならないのですか?
クリス:
に変更し
try ( RandomAccessFile f = new RandomAccessFile("E:\\emp.doc","r")){
....
}
それは自動的にトライスコープ終了後に呼び出されますよう閉じる必要はありません。