添加到文件而不是覆盖

时间:2013-10-24 16:23:22

标签: java csv

我编写了一个程序,它扫描了两次源代码,并使用检索到的数据创建了一个包含特定信息的CSV。我的问题是,当我去保存第二位数据时,它不会添加到创建的CSV中,而是用新信息覆盖它。我已经提到了这个link,但它使用的是另一个类。我的代码目前是:

  public static void scrapeWebsite() throws IOException {


    final WebClient webClient = new WebClient();
    final HtmlPage page = webClient.getPage(s);
    originalHtml = page.getWebResponse().getContentAsString();
    obtainInformation();
    originalHtml = "";
    final HtmlForm form = page.getForms().get(0);
    final HtmlSubmitInput button = form.getInputByValue(">");
    final HtmlPage page2 = button.click();
    try {
      synchronized (page2) {
        page2.wait(1000);
      }
    }
    catch(InterruptedException e)
    {
      System.out.println("error");
    }
    originalHtml = originalHtml + page2.refresh().getWebResponse().getContentAsString();
    obtainInformation();
  }

  public static void obtainInformation() throws IOException {

     PrintWriter docketFile = new PrintWriter(new FileWriter("tester3.csv", true));

//创建csv文件。 (名称必须更改,覆盖删除文件)         originalHtml = originalHtml.replace('“','*');         int i = 0;

    //While loop runs through all the data in the source code. There is (14) entries per page.
    while(i<14) {
      String plaintiffAtty = "PlaintiffAtty_"+i+"*>"; //creates the search string for the plaintiffatty
      Pattern plaintiffPattern = Pattern.compile("(?<="+Pattern.quote(plaintiffAtty)+").*?(?=</span>)");//creates the pattern for the atty
      Matcher plaintiffMatcher = plaintiffPattern.matcher(originalHtml); // looks for a match for the atty

      while (plaintiffMatcher.find()) {
        docketFile.write(plaintiffMatcher.group().toString()+", "); //writes the found atty to the file
      }
      i++;
    }
    docketFile.close(); //closes the file 
  } 
}

我认为必须在第二种方法中进行改变。

2 个答案:

答案 0 :(得分:3)

你的PrintWriter应该引用一个FileWriter构造的附加构造函数boolean设置为true。

例如

new PrintWriter(new FileWriter("myfile.csv", true));

请注意FileWriter的Javadoc。你的编码规范:

  

用于编写字符文件的便捷类。的构造者   此类假定默认字符编码和默认值   字节缓冲区大小是可以接受的。要自己指定这些值,   在FileOutputStream上构造一个OutputStreamWriter。

答案 1 :(得分:2)

看起来您正在尝试附加到文件,但不能在追加模式下打开PrintWriter。

请参阅PrintWriter append method not appending