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. If you like my tutorials, consider make a donation to these charities.

Comments

avatar