2026-10-24 16:36:46
在Java中读取和写入文本文件,可根据文件大小和场景选择合适方法,核心是使用java.nio.file包中的工具类,以下是具体实现方式:
一、快速读写小文件(推荐)使用Files类的静态方法,适合处理小文件(如配置文件、日志片段),支持显式指定UTF-8编码,避免乱码。
读取文件:使用Files.readAllLines()将文件每行作为字符串存入List,若需指定编码(如UTF-8),需传入StandardCharsets.UTF_8参数。
import java.nio.file.*;import java.util.*;import java.nio.charset.StandardCharsets;List<String> lines = Files.readAllLines(Paths.get("data.txt"), StandardCharsets.UTF_8);写入文件:使用Files.write()将字符串列表写入文件,默认覆盖原文件。若需追加内容,需添加StandardOpenOption.APPEND选项。
import java.nio.file.*;import java.util.*;import java.nio.charset.StandardCharsets;List<String> output = Arrays.asList("第一行", "第二行");Files.write(Paths.get("output.txt"), output, StandardCharsets.UTF_8); // 覆盖写入Files.write(Paths.get("output.txt"), output, StandardCharsets.UTF_8, StandardOpenOption.CREATE, StandardOpenOption.APPEND); // 追加写入当文件较大时(如日志文件、数据集),需避免一次性加载全部内容,改用BufferedReader和BufferedWriter逐行处理,配合try-with-resources确保资源自动释放。
逐行读取大文件:使用Files.newBufferedReader()创建BufferedReader,通过循环逐行读取,内存占用低。
import java.nio.file.*;import java.io.*;try (BufferedReader reader = Files.newBufferedReader(Paths.get("large.txt"))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); // 处理每一行 }} catch (IOException e) { e.printStackTrace();}逐行写入大文件:使用Files.newBufferedWriter()创建BufferedWriter,通过write()和newLine()方法写入内容,效率高于直接调用Files.write()。
import java.nio.file.*;import java.io.*;try (BufferedWriter writer = Files.newBufferedWriter(Paths.get("result.txt"))) { writer.write("这是第一行"); writer.newLine(); // 自动使用系统换行符 writer.write("这是第二行");} catch (IOException e) { e.printStackTrace();}通过合理选择方法,可高效、安全地完成Java中的文本文件读写操作。