To create a Java String
from the contents of a file, you can use one of the following methods, depending on your Java version and requirements:
1. Using Files.readString
(Java 11+)
The simplest and most concise method for reading a file into a String
with UTF-8 encoding:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class ReadFileToString {
public static void main(String[] args) throws Exception {
Path path = Paths.get("path/to/file.txt");
String content = Files.readString(path); // Default: UTF-8
System.out.println(content);
}
}
Specify Charset (e.g., ISO-8859-1):
String content = Files.readString(path, StandardCharsets.ISO_8859_1);
2. Using Files.readAllBytes
(Java 7+)
Read the file as bytes and convert to a String
with the desired charset:
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
public class ReadFileToString {
public static void main(String[] args) throws Exception {
Path path = Paths.get("path/to/file.txt");
byte[] bytes = Files.readAllBytes(path);
String content = new String(bytes, StandardCharsets.UTF_8);
System.out.println(content);
}
}
3. Using BufferedReader
(Legacy Approach)
Read line-by-line and append to a StringBuilder
(suitable for large files):
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileToString {
public static void main(String[] args) throws IOException {
StringBuilder contentBuilder = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader("path/to/file.txt"))) {
String line;
while ((line = br.readLine()) != null) {
contentBuilder.append(line).append(System.lineSeparator());
}
}
String content = contentBuilder.toString();
System.out.println(content);
}
}
Note: This method may not preserve original line endings exactly, as readLine()
strips them.
4. Using Scanner
(Not Recommended)
Read the entire file in one go using a delimiter (\Z
matches the end of input):
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class ReadFileToString {
public static void main(String[] args) throws IOException {
File file = new File("path/to/file.txt");
String content = new Scanner(file).useDelimiter("\\Z").next();
System.out.println(content);
}
}
Key Considerations
Method | Java Version | Pros | Cons |
---|---|---|---|
Files.readString | 11+ | Simplest, preserves encoding | Not for large files (> RAM) |
Files.readAllBytes | 7+ | Works with any charset | Loads entire file into memory |
BufferedReader | 1.5+ | Memory-efficient for large files | Manual line handling |
Scanner | 1.5+ | Quick for small files | Less intuitive, slower |
Handling Exceptions
All methods require handling IOException
(e.g., file not found, read errors). Use try-with-resources
(as shown) to auto-close streams.
Example: Read File with Custom Charset
import java.nio.charset.Charset;
// Read with ISO-8859-1 encoding
String content = new String(Files.readAllBytes(path), Charset.forName("ISO-8859-1"));
Choose the method that best fits your Java version and file size requirements!