2013-04-23 104 views
-3

我在写入Java文件时遇到问题。我想写入.txt文件,但是当程序写入任何内容时,它会在写入之前删除。我不想要它。我在使用flw.append之前使用了flw.write,但没有任何变化。你可以帮我吗 ?Java写入文件

public void list(String path) throws IOException { 

      FileWriter flw=new FileWriter(path); 

    flw.append("----------------------------------------------List---------------------------------------------\n"); 

      for (int i = 0; i < athCtr - 1; i++) { 
     flw.append("Author:" + athr[i].getId() + "\t" 
       + athr[i].getName() + "\t" + athr[i].getUniv() + "\t" 
       + athr[i].getDepart() + "\t" + athr[i].getEmail()+"\n"); 

     if (athr[i].getArtCtr() != 0) { 
      for (int j = 0; j < athr[i].getArtCtr(); j++) { 
       flw.append("+" + athr[i].getArticle(j) + ":"); 
       for (int k = 0; k < artCtr; k++) { 
        if (art[k].getPaperId().equals(athr[i].getArticle(j))) { 
         flw.append("\t" + art[k].getName() + "\t" 
           + art[k].getPublisherName() + "\t" 
           + art[k].getPublishYear()+"\n"); 


        } 
       } 

      } 
      flw.append("\n"); 
     } 
    } 

    flw.append("Author:" + athr[athCtr - 1].getId() + "\t" 
      + athr[athCtr - 1].getName() + "\t" 
      + athr[athCtr - 1].getUniv() + "\t" 
      + athr[athCtr - 1].getDepart() + "\t" 
      + athr[athCtr - 1].getEmail()+"\n"); 
    if (athr[athCtr - 1].getArtCtr() != 0) { 
     for (int j = 0; j < athr[athCtr - 1].getArtCtr(); j++) { 
      flw.append("+" + athr[athCtr - 1].getArticle(j) + ":"); 
      for (int k = 0; k < artCtr; k++) { 
       if (art[k].getPaperId().equals(
         athr[athCtr - 1].getArticle(j))) { 
        flw.append("\t" + art[k].getName() + "\t" 
          + art[k].getPublisherName() + "\t" 
          + art[k].getPublishYear()+"\n"); 

       } 
      } 
     } 
    } 
    flw.append("----------------------------------------------End----------------------------------------------\n\n"); 
    flw.close(); 
} 
+3

“我想写入.txt文件,但是当程序写入任何内容时,它会在写入之前删除,我不想要它。”什么? – 2013-04-23 18:03:04

+0

可能的重复http://stackoverflow.com/q/1625234/876142 – 2013-04-23 18:03:52

+0

http://stackoverflow.com/questions/1625234/how-to-append-text-to-an-existing-file-in-java - - 看到这个。 – 2013-04-23 18:03:58

回答

6

这个问题,因为它已被要求,并回答了很多很多次,但关键是要使用正确的FileWriter的构造函数,一个作为第二个参数是需要真正的也许应该被关闭。第二个真实参数告诉Java打开文件以进行附加而不是覆盖。

//FileWriter flw = new FileWriter(path); // not this 
FileWriter flw = new FileWriter(path, true); // but this 

事实上,我投票结束这个问题的重复。另外:您可能不想直接用FileWriter编写,而是想将其包装在BufferedWriter或(我的首选)PrintWriter实例中。这将允许您使用println(...)和其他熟悉的方法简单高效地写入文件。

编辑2:在查看更多代码后,我认为实际上应该考虑使用PrintWriter类,然后使用printf(...)方法编写,因为这允许格式化的字符串输出,这比一堆选项卡正如你正在做的那样。

+0

谢谢它非常有用。 – Suheyb 2013-04-23 18:18:40

+0

@Suheyb:不客气。在仔细查看代码之后,我认为实际上你应该考虑使用PrintWriter类,然后使用'printf(...)'方法编写代码,因为这样可以实现格式化的字符串输出,比起一堆选项卡正如你正在做的那样。 – 2013-04-23 18:21:37

+0

我使用BufferedWriter类和newLine()方法修复了此问题。 – Suheyb 2013-04-23 18:27:34