Writing To A File In Java
Java create and write to a file
In Java, we can use Files.write to create and write to a file.
String content = "..."; Path path = Paths.get("/home/mkyong/test.txt"); // string -> bytes Files.write(path, content.getBytes(StandardCharsets.UTF_8)); The Files.write also accepts an Iterable interface; it means this API can write a List to a file.
List<String> list = Arrays.asList("a", "b", "c"); Files.write(path, list); Short History
Before Java 7, for writing bytes (image) to a file, we use FileOutputStream; for writing characters (text) to a file, we use FileWriter, and usually wrapped by a BufferedWriter to gain performance.
- In Java 7, there is a new NIO class named
java.nio.file.Files, and we can useFiles.write()to write both bytes and characters. - In Java 8, we can use
Files.newBufferedWriter(path)to create aBufferedWriter. - In Java 11, there is a new
Files.writeStringAPI to write string directly to a file.
1. Create and write to a file – Files.write
1.1 Before Java 7, we can use the classic FileWriter and BufferedWriter to write text to a file.
try (FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw)) { bw.write(content); bw.newLine(); } In Java 7 and above, we can use one line Files.write to write a text to a file, and we also worry-free about closing the opened resource (file) because the Files.write will auto close the opened resource.
Files.write(path, content.getBytes(StandardCharsets.UTF_8)); 1.2 The below example uses Files.write to create and write a String to a file.
FileWrite.java
package com.mkyong.io.file; import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.List; public class FileWrite { private static final String NEW_LINE = System.lineSeparator(); public static void main(String[] args) throws IOException { Path path = Paths.get("/home/mkyong/test/aaa.txt"); writeFile(path, "Hello World 1" + NEW_LINE); } // Java 7 private static void writeFile(Path path, String content) throws IOException { // file does not exist, create and write it // if the file exists, override the content Files.write(path, content.getBytes(StandardCharsets.UTF_8)); // Append mode // if the file exists, append string to the end of file. // Files.write(path, content.getBytes(StandardCharsets.UTF_8), // StandardOpenOption.CREATE, StandardOpenOption.APPEND); // if file does not exist, throws NoSuchFileException // if the file exists, append it // Files.write(path, content.getBytes(StandardCharsets.UTF_8), // StandardOpenOption.APPEND); } } Output
Run the 1st time, and we created a file named aaa.txt.
/home/mkyong/test/aaa.txt
Hello World 1 Run the 2nd time, we will override the file content.
/home/mkyong/test/aaa.txt
Hello World 1 For append mode, we can define both StandardOpenOption.CREATE and StandardOpenOption.APPEND.
Files.write(path, content.getBytes(StandardCharsets.UTF_8), StandardOpenOption.CREATE, StandardOpenOption.APPEND); Run the 3rd time, this time with append mode enabled, we will append the new content to the end of the file.
/home/mkyong/test/aaa.txt
Hello World 1 Hello World 1 1.3. The Files.write also support Iterable, it means we can pass a List to write multiple lines to a file.
List<String> list = Arrays.asList("a", "b", "c"); // Java 7 Files.write(path, list, StandardCharsets.UTF_8); // Java 8, default utf_8 Files.write(path, list); 2. Java 11 – Files.writeString
In Java 7, we need to convert the String into a byte[] before passing it to Files.write.
String content = "..."; Files.write(path, content.getBytes(StandardCharsets.UTF_8)); In Java 11, we can use the new API named Files.writeString to write a String or text directly to a file.
// Java 11 private static void writeFileJava11(Path path, String content) throws IOException { // default utf_8 // file does not exists, create and write it // if the file exists, override the content Files.writeString(path, content); // Append mode // Files.writeString(path, content, // StandardOpenOption.CREATE, StandardOpenOption.APPEND); } 3. FileWriter + BufferedWriter
3.1 Before Java 7, the FileWriter + BufferedWriter combination is a standard solution for creating and writing characters or text to a file.
try (FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw)) { bw.write(content); bw.newLine(); // add new line, System.lineSeparator() } // append mode try (FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw)) { bw.write(content); bw.newLine(); } 3.2 In Java 8, we can use the Files.newBufferedWriter to directly create a BufferedWriter object.
// default utf_8 try (BufferedWriter bw = Files.newBufferedWriter(path)) { bw.write(content); bw.newLine(); } // append mode try (BufferedWriter bw = Files.newBufferedWriter(path, StandardOpenOption.CREATE, StandardOpenOption.APPEND)) { bw.write(content); bw.newLine(); } P.S There is nothing wrong with the above FileWriter + BufferedWriter method to write a file, just the Files.write provides more clean and easy to use API.
Writing To A File In Java
Source: https://mkyong.com/java/java-how-to-create-and-write-to-a-file/
Posted by: traylorowly1936.blogspot.com

0 Response to "Writing To A File In Java"
Post a Comment