2011-02-01 5 views
-1

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

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

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); 

}

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

ответ

1

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

1

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

делают

dos = new DataOutputStream(new FileOutputStream(outFile),true); 
0

См [http://download.oracle.com/javase/6/ docs/api/java/io/FileOutputStream.html # FileOutputStream (java.io.File, boolean)] [1]

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

[1]: http://download.oracle.com/javase/6/docs/api/java/io/FileOutputStream.html#FileOutputStream(java.io.File, булево)

2

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

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

Создает поток выходного файла для записи в файл с указанным имя. Если второй аргумент истинен, то байты будут записываться в конец файла, а не в начало. Для представления этого подключения к файлу создается новый объект 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, логическое)