2013-05-15 109 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。