Java – How to append text to a file

In Java, we can use Files.write and StandardOpenOption.APPEND to append text to a file.


	try {
		// Create file if doesn't exist, write to it
		// If file exist, append it
		Files.write(Paths.get("app.log"), "Hello World".getBytes(),
				StandardOpenOption.CREATE, StandardOpenOption.APPEND);

	} catch (IOException x) {
		//...
	}

1. Files.write

Append a List into an existing file.

FileExample.java

package com.mkyong;

import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import java.util.List;

public class FileExample {

    public static void main(String[] args) {

        Charset utf8 = StandardCharsets.UTF_8;
        List<String> list = Arrays.asList("Line 1", "Line 2");

        try {

            Files.write(Paths.get("app.log"), list, utf8,
                    StandardOpenOption.CREATE, StandardOpenOption.APPEND);

        } catch (IOException x) {
            System.err.format("IOException: %s%n", x);
        }

    }

}

Output

Run 1st time.

app.log

Line 1
Line 2

Run 2nd time.

app.log

Line 1
Line 2
Line 1
Line 2

2. BufferedWriter

2.1 To enable append mode, pass a true as second argument to FileWriter.

BufferedWriterExample.java

package com.mkyong;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class BufferedWriterExample {

    public static void main(String[] args) {

        List<String> list = Arrays.asList("Line 1", "Line 2");

		// append mode
        try (FileWriter writer = new FileWriter("app.log", true);
             BufferedWriter bw = new BufferedWriter(writer)) {

            for (String s : list) {
                bw.write(s);
                bw.write("\n");
            }

        } catch (IOException e) {
            System.err.format("IOException: %s%n", e);
        }

    }
}

2.2 Before JDK 7, we need to close everything manually.

ClassicBufferedWriterExample.java

package com.mkyong;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class ClassicBufferedWriterExample {

    public static void main(String[] args) {

        BufferedWriter bw = null;
        FileWriter fw = null;

        try {

            String content = "Hellow";

            fw = new FileWriter("app.log", true);
            bw = new BufferedWriter(fw);
            bw.write(content);

        } catch (IOException e) {
            System.err.format("IOException: %s%n", e);
        } finally {
            try {
                if (bw != null)
                    bw.close();

                if (fw != null)
                    fw.close();
            } catch (IOException ex) {
                System.err.format("IOException: %s%n", ex);
            }
        }
    }
}

References

About the Author

author image
mkyong
Founder of Mkyong.com, love Java and open source stuff. Follow him on Twitter, or befriend him on Facebook or Google Plus. If you like my tutorials, consider make a donation to these charities.

Comments

avatar