0

How can I write in existing .txt file? I've tried multiple approaches, I've stopped on this one:

 private void writeToFile(String data) {
    try {

        File file = new File(infoDirectory, txtName);
        FileOutputStream fOut = new FileOutputStream(file);
        OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
        myOutWriter.append(data);
        myOutWriter.close();
        fOut.close();

    }
    catch (IOException e) {
        Log.i("Debug", "File write failed: " + e.toString());
    }
}

But instead of adding string to the file, it re-writes insides.

[UPDATE]

private void writeToFile(String data) {
    try {
        File file = new File(infoDirectory, txtName);
        FileWriter append = new FileWriter(file, true);
        BufferedWriter output = new BufferedWriter(append);

        output.write(data);

    }
    catch (IOException e) {
        Log.i("Debug", "File write failed: " + e.toString());
    }
}

[WORKING CODE]

private void writeToFile(String data) {
        try {

            File file = new File(infoDirectory, txtName);
            FileOutputStream fOut = new FileOutputStream(file,true);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            myOutWriter.append(data);
            myOutWriter.close();
            fOut.close();
        }
        catch (IOException e) {
            Log.i("Debug", "File write failed: " + e.toString());
        }
    }
Oleksandr Firsov
  • 1,428
  • 1
  • 21
  • 48
  • 7
    http://stackoverflow.com/questions/1625234/how-to-append-text-to-an-existing-file-in-java – pvllnspk Jan 09 '16 at 21:52
  • in your code, try this constructor for FileOutputStream https://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html#FileOutputStream%28java.io.File,%20boolean%29, with an additional parameter to append – A_Di-Matteo Jan 09 '16 at 21:53

1 Answers1

1

You have to open the file in append mode, which can be achieved by using the

FileWriter(String fileName, boolean append) constructor.

Replace this line

FileOutputStream fOut = new FileOutputStream(file);

To

FileOutputStream fOut = openFileOutput("yourfile.txt", MODE_APPEND);

Hope it helps.

Kristo
  • 1,339
  • 12
  • 22