在 Java 中,读取 File 文件有多种方式,下面按常见场景给你总结几种最实用的方法(基于 Java 8+)。
Files.readAllLines适合:小文件、按行读取
import java.nio.file.*;
import java.util.List;
public class ReadFileDemo {
public static void main(String[] args) throws Exception {
Path path = Paths.get("test.txt");
List<String> lines = Files.readAllLines(path);
for (String line : lines) {
System.out.println(line);
}
}
}
✅ 简单、安全
❌ 不适合超大文件
适合:读取配置文件、JSON、HTML
String content = Files.readString(Paths.get("test.txt"));
System.out.println(content);
BufferedReader(推荐大文件)适合:逐行读取、内存友好
import java.io.*;
public class BufferedReaderDemo {
public static void main(String[] args) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
}
✅ 性能好
✅ 自动关闭资源
FileInputStream(字节读取)适合:图片、视频、二进制文件
import java.io.*;
public class InputStreamDemo {
public static void main(String[] args) throws IOException {
try (FileInputStream fis = new FileInputStream("test.txt")) {
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
}
}
}
Scanner适合:简单读取、解析格式
import java.io.*;
import java.util.Scanner;
public class ScannerDemo {
public static void main(String[] args) throws FileNotFoundException {
Scanner sc = new Scanner(new File("test.txt"));
while (sc.hasNextLine()) {
System.out.println(sc.nextLine());
}
sc.close();
}
}
Files.lines(Paths.get("big.txt"))
.forEach(System.out::println);
Files.readAllLines(path, StandardCharsets.UTF_8);
new InputStreamReader(fis, "UTF-8");
src/test.txtC:/data/test.txt| 场景 | 推荐方式 |
|---|---|
| 小文本 | Files.readAllLines |
| 大文本 | BufferedReader |
| 二进制 | FileInputStream |
| 新项目 | java.nio.file |
如果你是 Android / Spring / 读取特定格式(JSON、CSV),可以告诉我,我给你更针对性的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。