Переписать в файл - PullRequest
       1

Переписать в файл

6 голосов
/ 13 декабря 2011

Я пишу простую функцию, как это:

private static void write(String Swrite) throws IOException {
   if(!file.exists()) {
      file.createNewFile();
   }
   FileOutputStream fop=new FileOutputStream(file);
   if(Swrite!=null)
      fop.write(Swrite.getBytes());
   fop.flush();
   fop.close();
}

Каждый раз, когда я вызываю его, он переписывается, а затем я просто получаю последние записанные элементы. Как я могу изменить это, чтобы не переписывать? Переменная file определяется глобально как File.

Ответы [ 5 ]

3 голосов
/ 13 декабря 2011

В конструкторе FileOutputStream необходимо добавить параметр boolean append. Тогда это будет выглядеть так:

FileOutputStream fop = new FileOutputStream(file, true);

Это говорит FileOutputStream, что он должен добавить файл вместо очистки и перезаписи всех своих текущих данных.

2 голосов
/ 13 декабря 2011

Использовать constrctor, который принимает append флаг в качестве параметра.

FileOutputStream fop=new FileOutputStream(file, true); 
1 голос
/ 13 декабря 2011

для этого следует открыть файл в режиме append, по умолчанию FileOutputStream открывает файл в режиме write. И вам не нужно проверять наличие file, это будет сделано неявно FileOutputStream

private static void write(String Swrite) throws IOException {
    FileOutputStream fop=new FileOutputStream(file, true);
   if(Swrite!=null)
      fop.write(Swrite.getBytes());
   fop.flush();
   fop.close();
}
0 голосов
/ 13 декабря 2011

Правильный параметр конструктора буксировки. И это излишне:

if(!file.exists()) {
      file.createNewFile();
}

Конструктор сделает это за вас.

0 голосов
/ 13 декабря 2011

Попробуйте RandomAccessFile , если вы пытаетесь записать с определенными байтовыми смещениями.

...