在 Java 中,使用 IO(java.io) 读取文件有多种方式,下面按常用程度和场景给你系统讲一下,并附上示例代码。
FileInputStreamimport java.io.FileInputStream;
import java.io.IOException;
public class ReadFileDemo {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("test.txt")) {
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
✅ 特点:
try (FileInputStream fis = new FileInputStream("test.txt")) {
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) != -1) {
System.out.print(new String(buffer, 0, len));
}
}
✅ 适合:
FileReaderimport java.io.FileReader;
import java.io.IOException;
public class FileReaderDemo {
public static void main(String[] args) {
try (FileReader fr = new FileReader("test.txt")) {
int ch;
while ((ch = fr.read()) != -1) {
System.out.print((char) ch);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
✅ 适合:
BufferedReader(最常用 ✅)import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BufferedReaderDemo {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
✅ 优点:
Files(NIO,但底层仍是 IO)import java.nio.file.Files;
import java.nio.file.Paths;
public class FilesDemo {
public static void main(String[] args) throws Exception {
String content = new String(Files.readAllBytes(Paths.get("test.txt")));
System.out.println(content);
}
}
✅ 适合:
| 方式 | 适用场景 | 是否推荐 |
|---|---|---|
| FileInputStream | 二进制文件 | ✅ |
| FileReader | 文本文件 | ⚠️ |
| BufferedReader | 文本读取 | ✅✅✅ |
| Files.readAllBytes | 小文件 | ✅ |
✅ 文本文件:
BufferedReader + FileReader
✅ 二进制文件:
BufferedInputStream + FileInputStream
✅ 始终使用 try-with-resources(自动关闭流)
如果你愿意,我可以:
你更想了解哪一种?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。