2013-05-28 33 views
3

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

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(); 
    } 


} 

}}

+0

你必须要追加输出。 –

+0

你是否想将整个竞争从控制台追加到文件?在这种情况下[this](http://stackoverflow.com/a/16238195/1393766)可能会让你感兴趣。这样你只需要打印到控制台而不需要复制代码也可以将其写入文件。 – Pshemo

回答

5

你是如此功亏一篑。您只需要打开FileWriter并追加设置为true。追加将使它添加到文件的末尾,而不是每次覆盖它。

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

非常感谢和快速回复!它的工作方式应该是现在的 – SpilledcupofJava

+0

你的答案是惊人的。感谢那!如何将每条新消息保存在一个新行中? –

+0

这取决于您的代码,但很可能您只是在for循环之外初始化PrintWriter。然后使用out.println();可能会在推文之间打印换行符。 – greedybuddha

1

改变这一行(因为它会消除你先前写入的数据):

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

对于(这里要设置追加模式为true)

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

默认模式设置为false,所以它会覆盖你的文件。

1

而不是在for loop的每次迭代期间创建PrintWriterFileWriter对象的对象,您应该初始化您外面的PrintWriter for 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(); 
      } 
     } 
-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(); 
+1

这不回答发布的问题。 – mjuarez

相关问题