2014-08-29 44 views
1
String id = filedda.getText(); 
String pass= filedda1.getText(); 
try { 
    File inputFile = new File("E:/yoo.txt"); 
    File tempfile = new File("E:/mytempfile.txt"); 

    BufferedReader reader = new BufferedReader(new FileReader(inputFile)); 
    BufferedWriter writer = new BufferedWriter(new FileWriter(tempfile)); 

    String CurrentLine; 

    while((CurrentLine = reader.readLine())!=null){ 
     if(CurrentLine.contains(id+pass)){ 
      CurrentLine= CurrentLine.replace(id+pass, ""); 

     } 
     writer.write(CurrentLine); 
     reader.close(); 
     writer.close(); 


     inputFile.delete(); 
     tempfile.renameTo(inputFile); 
    } 
} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

我想要它做的是:它会从文件中删除id + pass字符串。难以从Java文本文件中删除行

它做正确,如果情形是一样,

abc 
cde 

而且我id+pass= cde

文件输出:abc

但如果id+pass= abc,那么整个文件输出变得一无所有。

+2

你正在关闭每一行的流。 – J4v4 2014-08-29 15:50:50

回答

3

您应该只关闭文件后while循环:

while(){ 
//... 
} 
reader.close(); 
writer.close(); 
+0

刚刚那样做,仍然没有。 这是一个主要问题,仍然有另一个我猜。 – user3420043 2014-08-29 16:05:04

+0

@ user3420043请告诉我,你没有在inputFile.delete(); tempfile.renameTo(INPUTFILE);'。 – Mansueli 2014-08-29 16:06:46

+0

我没有在这段时间保持这些 – user3420043 2014-08-29 16:10:40

0

创建FileWriter时,应该提供true作为参数以表明您希望附加数据。 Shown here.

e.g:

BufferedWriter writer = new BufferedWriter(new FileWriter(tempfile, true)); 

如果我正确理解你的问题。

-1

试试这个代码:

String id = filedda.getText(); 
     String pass= filedda1.getText(); 
     try { 
      File inputFile = new File("E:/yoo.txt"); 
      File tempfile = new File("E:/mytempfile.txt"); 

      BufferedReader reader = new BufferedReader(new FileReader(inputFile)); 
      BufferedWriter writer = new BufferedWriter(new FileWriter(tempfile)); 

      String CurrentLine; 

      while((CurrentLine = reader.readLine())!=null){ 
       if(CurrentLine.contains(id+pass)){ 
        CurrentLine= CurrentLine.replace(id+pass, ""); 

       } 

      } 
       writer.write(CurrentLine); 
       reader.close(); 
       writer.close(); 


       inputFile.delete(); 
       tempfile.renameTo(inputFile); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
2

您及早关闭文件。 关闭这里:

} 
     reader.close(); 
     writer.close(); 

} catch (FileNotFoundException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 

此外,如果您是在Swing工作,确保其安全EDT