2013-05-15 8 views
0

Как записывать данные в реальном времени в файл на Java?Запись данных в реальном времени в файл

Я пытаюсь доставить твиттер в реальном времени в текстовый файл. Вот код, который я написал:

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 = новый FileWriter (" c: \\ twitterDumponFile.txt ", true)'? –

ответ

3

Вам необходимо открыть FileWriter в append.

заменить

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, чтобы знать, как и какие методы и классы.

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