Чтение и запись файла - PullRequest
0 голосов
/ 01 февраля 2011

У меня есть код для записи в файл каждый раз, когда есть запись в текстовое поле. но после процесса, когда запись сделана снова, файл переписывается вместо продолжения записи в файл, и поэтому я теряю предыдущие данные. Как мне переписать существующий, чтобы потом я смог прочитать эти данные даже после закрытия приложения.

Дан код для процесса записи:

public boolean writeToFile(String dataLine) {
  dataLine = "\n" + dataLine;


try {
  File outFile = new File(filepath);

    dos = new DataOutputStream(new FileOutputStream(outFile));

  dos.writeBytes(dataLine);
  dos.close();
} catch (FileNotFoundException ex) {
  return (false);
} catch (IOException ex) {
  return (false);
}
return (true);

}

Может ли кто-нибудь внести изменения в код по мере необходимости и отправить его мне.

Ответы [ 4 ]

2 голосов
/ 01 февраля 2011

[Java API для FileOutputStream] [1] гласит:

public FileOutputStream(String name,
                        boolean append)
                throws FileNotFoundException)

Создает поток выходного файла для записи в файл с указанным именем.Если второй аргумент равен true, байты будут записаны в конец файла, а не в начало.Новый объект FileDescriptor создается для представления этого файлового соединения.

Итак, ваш код должен выглядеть следующим образом:

public boolean writeToFile(String dataLine) {
  dataLine = "\n" + dataLine;
  try {
    File outFile = new File(filepath);
    dos = new DataOutputStream(new FileOutputStream(outFile,true));
    dos.writeBytes(dataLine);
    dos.close();
  } catch (FileNotFoundException ex) {
    return (false);
  } catch (IOException ex) {
    return (false); 
  }
  return (true);
}

[1]: http://download.oracle.com/javase/6/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.lang.String, логический)

1 голос
/ 01 февраля 2011

Используйте конструктор FileOutputStream(File file, boolean append) с append = true

1 голос
/ 01 февраля 2011

Открыть файл в режиме append.

сделать его

dos = new DataOutputStream(new FileOutputStream(outFile),true);
0 голосов
/ 01 февраля 2011

См. [http://download.oracle.com/javase/6/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File, логическое значение]] [1]

Также обратите внимание, что вам, вероятно, следует использовать FileWriter для написания текста. FileOutputStream для двоичных данных.

[1]: http://download.oracle.com/javase/6/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File, логическое значение)

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