2013-10-24 3 views
1

Я написал программу, которая очистила исходный код дважды и создала 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 
    } 
} 

Я считаю, что изменения должны быть сделаны в второй метод.

ответ

3

Ваш PrintWriter должен ссылаться на FileWriter построен с Append конструктора булево значение иСТИНА.

например

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

Обратите внимание на Javadoc для FileWriter re. ваша спецификация кодирования:

Класс удобства для написания файлов символов. Конструкторы класса предполагают, что допустимы кодировка символов по умолчанию и размер байтов по умолчанию . Чтобы сами определить эти значения, создайте OutputStreamWriter в FileOutputStream.

+0

Отлично работает. Отредактирован код, чтобы отразить правильное изменение. – Ctech45

Смежные вопросы