我无法读取然后在同一文本文件中写入数据

时间:2017-03-14 11:06:59

标签: java

在这段代码中,我在一个名为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);
}

1 个答案:

答案 0 :(得分:2)

String source=fd.readLine();
while(source!=null){
  if(source.equals(addTextField.getText())){
    i++;break;
  }
}

如果来源不是nullsource.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);
}