3

我是 Java 新手,一直在尝试将一些开源代码串在一起来搜索推文,最后成功了。然后我想将输出保存到文本文件中。我搜索并查看了控制台输出方法、filewriter、printwriter,我在这里找到了一个有效的方法,但它只保存了一条推文并覆盖了它保存的前一条推文。如何在不覆盖以前保存的情况下正确附加现有文本文件并确保它保存控制台屏幕上的所有推文?下面的示例代码:

    JSONObject js = new JSONObject(buff.toString());  
    JSONArray tweets = js.getJSONArray("results");  
    JSONObject tweet;  
    for(int i=0;i<tweets.length();i++) {  
        tweet = tweets.getJSONObject(i); 
        PrintWriter out;
         try {
        out = new PrintWriter(new FileWriter("C:\\tweet\\outputfile.txt"));
        System.out.println((i+1)+")http://twitter.com/"+tweet.getString("from_user")+" at "+tweet.getString("created_at"));  
        System.out.println(tweets.getJSONObject(i).getString("text")+"\n");
        out.println((i+1)+")http://twitter.com/"+tweet.getString("from_user")+" at "+tweet.getString("created_at"));
        out.println(tweets.getJSONObject(i).getString("text")+"\n");

         out.close();
    } catch (IOException e) {
        e.printStackTrace();
    } 


}

} }

4

4 回答 4

5

你是如此诱人地接近。您只需要打开FileWriter附加设置为true. Append 将使其添加到文件的末尾,而不是每次都覆盖它。

out = new PrintWriter(new FileWriter("C:\\tweet\\outputfile.txt", true));
于 2013-05-28T01:52:14.723 回答
1

而不是在您的每次迭代期间创建对象PrintWriter和对象,您应该在您外部初始化 PrintWriter (它将提高性能)最终释放资源。FileWriterfor loopfor loop

PrintWriter  out = null ;
try
{
  // putting
  out = new PrintWriter(new FileWriter("C:\\tweet\\outputfile.txt"),true); // appending file if exists.
  // JSON Parsing instructions
  for(int i=0;i<tweets.length();i++) 
  { 
    // processing logic and write operation to file
  }
}
catch(CustomExceptions e) {//All other exception handling}
catch(Exception e){//Generic exception handling }
finally{
          if(out != null
          {
              out.close();
          }
       }
于 2013-05-28T02:28:15.630 回答
1

更改此行(因为它会擦除您之前写入的数据):

out = new PrintWriter(new FileWriter("C:\\tweet\\outputfile.txt"));

对于(在这里您将附加模式设置为 true)

out = new PrintWriter(new FileWriter("C:\\tweet\\outputfile.txt"), true);

默认模式设置为 false,因此它将覆盖您的文件。

于 2013-05-28T01:53:38.213 回答
-1

公共最终字符串路径 =“你的路径”

        PrintWriter pw = new PrintWriter(new FileWriter(path),true);/*automatically append the line you want to save and if false it will overwrite the data */

pw.write("你想要什么")

        pw.close();
于 2015-05-07T09:43:11.453 回答