Java开发中能否不使用导入语句直接打开读取file.txt文件?
Java无第三方依赖的文件读取实现方案
所有下列实现用到的类均来自JDK标准库(java.io、java.nio.file包),不需要导入任何第三方库。你之前使用的BufferedReader本身也属于JDK原生IO类,并非第三方组件,如果你需要除BufferedReader之外的原生读取方案,可以参考以下几种:
1. FileInputStream 按字节读取
最底层的原生IO实现,直接读取文件原始字节流,适合需要逐字节处理随机字符的场景:
import java.io.FileInputStream; import java.io.IOException; public class ReadFileDemo { public static void main(String[] args) { // try-with-resources自动关闭流,无需手动释放 try (FileInputStream fis = new FileInputStream("file.txt")) { int content; // 读到文件末尾时返回-1 while ((content = fis.read()) != -1) { // 在此处按需处理每个字节/字符 System.out.print((char) content); } } catch (IOException e) { e.printStackTrace(); } } }
2. FileReader 按字符读取
属于java.io包下的原生字符流实现,自动按默认字符集(可手动指定编码)转换字节为字符,无需手动做字节-字符转换,适合文本类文件读取:
import java.io.FileReader; import java.io.IOException; public class ReadFileDemo { public static void main(String[] args) { try (FileReader fr = new FileReader("file.txt")) { int content; while ((content = fr.read()) != -1) { // 在此处按需处理每个字符 System.out.print((char) content); } } catch (IOException e) { e.printStackTrace(); } } }
3. Files 工具类(JDK7+ 原生NIO实现)
java.nio.file.Files是JDK自带的IO工具类,不需要任何第三方依赖,可大幅简化读取逻辑,非常适合练习场景,常用用法有两种:
- 一次性读取全文件为字符串(适合需要整体做字符串处理的场景):
import java.nio.file.Files; import java.nio.file.Paths; import java.nio.charset.StandardCharsets; import java.io.IOException; public class ReadFileDemo { public static void main(String[] args) { try { // 指定UTF-8编码读取,避免含随机字符的文件出现乱码 String content = new String(Files.readAllBytes(Paths.get("file.txt")), StandardCharsets.UTF_8); // 后续可直接对content执行各类字符串处理操作 } catch (IOException e) { e.printStackTrace(); } } }
- 按行读取文件为字符串列表(适合需要逐行处理的场景):
import java.nio.file.Files; import java.nio.file.Paths; import java.nio.charset.StandardCharsets; import java.util.List; import java.io.IOException; public class ReadFileDemo { public static void main(String[] args) { try { List<String> lines = Files.readAllLines(Paths.get("file.txt"), StandardCharsets.UTF_8); // 在此处遍历lines做逐行字符串处理 } catch (IOException e) { e.printStackTrace(); } } }
补充说明:如果处理的file.txt体积较大,推荐使用带缓存的IO实现(比如你之前用的
BufferedReader,或者包装BufferedInputStream/BufferedReader的Files工具类),可以减少磁盘IO次数,提升读取效率,这些缓存类也同样属于JDK原生类,无第三方依赖。
内容的提问来源于stack exchange,提问作者Рик Plays
相关产品推荐
相关产品推荐

