在这段代码中,我在一个名为source的文件中搜索一个字符串,如果它不存在,我必须在相同的文件(源)中写入该字符串。当我运行此代码时,整个程序都没有响应。当我不从文件中读取并直接编写程序时。我究竟做错了什么?
if(addChoice.getSelectedItem().equals("Source")){
int i=0;
try {
FileInputStream fis=new FileInputStream("source.txt");
BufferedReader fd=new BufferedReader(new InputStreamReader(fis));
String source=fd.readLine();
while(source!=null){
if(source.equals(addTextField.getText())){
i++;break;
}
}
fis.close();
fd.close();
} catch (Exception e5) {
}
if(i==0){
try {
FileOutpuStream fis=new FileOutputStream("source.txt",true);
BufferedWriter fd=new BufferedWriter(new OutputStreamWriter(fis));
fd.newLine();
fd.write(addTextField.getText());
fis.flush();
fd.flush();
fis.close();
fd.close();
} catch (Exception e1) {
}
}
else{
addLabel.setText("Already Exists");
}
addLabel.setVisible(true);
}
答案 0 :(得分:2)
String source=fd.readLine();
while(source!=null){
if(source.equals(addTextField.getText())){
i++;break;
}
}
如果来源不是null
而source.equals(addTextField.getText())
是false
,则会永远循环。
在循环中执行readline()
。
String source = null;
while((source = fd.readLine()) != null){
if(source.equals(addTextField.getText())){
i++;
break;
}
}
此外,你应该避免窒息你的例外:
catch (Exception e1) {
}
打印或更好地记录它们:
catch (Exception e1) {
e1.printStackTrace();
}
catch (Exception e1) {
LOGGER.error("Error during reading writing operation", e1);
}