How do I create a file and write to it? How do I create a file and write to it? java java

How do I create a file and write to it?


Note that each of the code samples below may throw IOException. Try/catch/finally blocks have been omitted for brevity. See this tutorial for information about exception handling.

Note that each of the code samples below will overwrite the file if it already exists

Creating a text file:

PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");writer.println("The first line");writer.println("The second line");writer.close();

Creating a binary file:

byte data[] = ...FileOutputStream out = new FileOutputStream("the-file-name");out.write(data);out.close();

Java 7+ users can use the Files class to write to files:

Creating a text file:

List<String> lines = Arrays.asList("The first line", "The second line");Path file = Paths.get("the-file-name.txt");Files.write(file, lines, StandardCharsets.UTF_8);//Files.write(file, lines, StandardCharsets.UTF_8, StandardOpenOption.APPEND);

Creating a binary file:

byte data[] = ...Path file = Paths.get("the-file-name");Files.write(file, data);//Files.write(file, data, StandardOpenOption.APPEND);


In Java 7 and up:

try (Writer writer = new BufferedWriter(new OutputStreamWriter(              new FileOutputStream("filename.txt"), "utf-8"))) {   writer.write("something");}

There are useful utilities for that though:

Note also that you can use a FileWriter, but it uses the default encoding, which is often a bad idea - it's best to specify the encoding explicitly.

Below is the original, prior-to-Java 7 answer


Writer writer = null;try {    writer = new BufferedWriter(new OutputStreamWriter(          new FileOutputStream("filename.txt"), "utf-8"));    writer.write("Something");} catch (IOException ex) {    // Report} finally {   try {writer.close();} catch (Exception ex) {/*ignore*/}}

See also: Reading, Writing, and Creating Files (includes NIO2).


If you already have the content you want to write to the file (and not generated on the fly), the java.nio.file.Files addition in Java 7 as part of native I/O provides the simplest and most efficient way to achieve your goals.

Basically creating and writing to a file is one line only, moreover one simple method call!

The following example creates and writes to 6 different files to showcase how it can be used:

Charset utf8 = StandardCharsets.UTF_8;List<String> lines = Arrays.asList("1st line", "2nd line");byte[] data = {1, 2, 3, 4, 5};try {    Files.write(Paths.get("file1.bin"), data);    Files.write(Paths.get("file2.bin"), data,            StandardOpenOption.CREATE, StandardOpenOption.APPEND);    Files.write(Paths.get("file3.txt"), "content".getBytes());    Files.write(Paths.get("file4.txt"), "content".getBytes(utf8));    Files.write(Paths.get("file5.txt"), lines, utf8);    Files.write(Paths.get("file6.txt"), lines, utf8,            StandardOpenOption.CREATE, StandardOpenOption.APPEND);} catch (IOException e) {    e.printStackTrace();}