2013-05-15 77 views
0

如何在Java中将实时数据写入文件?将实时数据写入文件

我在试图获得实时的twitter feed到文本文件。这里是我已经写了代码:

public void onStatus(Status status) 
{ 
    User user = status.getUser(); 
    BufferedWriter bufferedWriter = null; 
    try 
    { 
     bufferedWriter = new BufferedWriter(new FileWriter("c:\\twitterDumponFile.txt")); 
     String username = status.getUser().getScreenName(); 
     bufferedWriter.write(username); 

     String profileLocation = user.getLocation(); 
     bufferedWriter.write(profileLocation); 

     String content = status.getText(); 
     bufferedWriter.write(content); 
     bufferedWriter.newLine(); 

    } 
    catch (FileNotFoundException ex) 
    { 
     ex.printStackTrace(); 
    } 
    catch (IOException ex) 
    { 
     ex.printStackTrace(); 
    } 
    finally 
    { 
     //Closing the BufferedWriter 
     try 
     { 
     if (bufferedWriter != null) 
     { 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
     } 
     } 
     catch (IOException ex) 
     { 
     ex.printStackTrace(); 
     } 
    } 
} 

当我打开该文件twitterDumponFile.txt它包含数据的单行。每次我打开它,它都有一个不同的数据,但只有一行,它不会将新数据附加到文件上。

请帮我看看哪里出错了。

+3

你试过这个'bufferedWriter = new FileWriter(“c:\\ twitterDumponFile.txt”,true)吗? –

回答

3

您需要打开FileWriter追加模式。

更换

bufferedWriter = new BufferedWriter(new FileWriter("c:\\twitterDumponFile.txt")); 

通过

bufferedWriter = new BufferedWriter(new FileWriter("c:\\twitterDumponFile.txt", true)); 
+1

感谢它为我工作.... – Zelig

+0

@Zelig对不起,我们来看一下实时数据如此之重的情况,以至于它可能会使应用程序崩溃一段时间。在这种情况下,BufferedWriter会在崩溃之前写入每个数据吗?或者,是否需要一些冲洗机制? – Sriram

+0

@Sriram:取决于您关闭BufferedWriter,您无法确定有多少数据仍在缓冲区中,但尚未写入文件。另外,如果应用程序崩溃而不关闭BufferedWriter,您的操作系统也可能会缓冲写入文件,以至于可能会丢失数据。 – MrSmith42

3
FileWriter("c:\\twitterDumponFile.txt") 

这不会将数据追加到该文件,它将从文件的开头写的,而不是使用:

FileWriter("c:\\twitterDumponFile.txt", true) 

这将写入文件结尾而不是开头。

请参阅FileWriter的文档。

0

您正在覆盖文件中已有的数据而不是附加它。

使用API链接了解如何,而不是追加覆盖的...... 它总是使用API​​知道好办法如何和的方法和类abouts。