ファイルから情報を取得し、ユーザーが探している情報がファイルに含まれているかどうかを確認するメソッドを Java で作成しようとしています。ただし、私が提示するコードでは、Eclipse は「return true;」行でリソース リークがあることを示しています。そして、「br = new BufferedReader(fr);」プログラムの最後で close() メソッドを使用しているにもかかわらず、決して閉じません。どうやら私は何かが欠けているようです。誰かが何が起こっているのかを理解するのを手伝ってくれますか? よろしくお願いします!
import java.io.*;
class Help{
String helpfile;
Help(String fname){
helpfile = fname;
}
boolean helpon(String what){
FileReader fr;
BufferedReader br;
int ch;
String topic, info;
try{
fr = new FileReader(helpfile);
br = new BufferedReader(fr);
}
catch(FileNotFoundException e){
System.out.println(e);
return false;
}
try{
do{
ch = br.read();
if(ch=='#'){
topic = br.readLine();
if(what.compareTo(topic) == 0){
do{
info = br.readLine();
if(info!=null)
System.out.println(info);
}while((info!= null) && (info.compareTo("")!= 0));
return true;
}
}
}while(ch!=-1);
}
catch(IOException e){
System.out.println(e);
return false;
}
try{
br.close();
}
catch(IOException e){
System.out.println(e);
}
return false;
}
}