在 Java 中,File 本身只表示文件路径,真正进行读写需要配合 IO 流(Stream)或 NIO。下面按常见场景给你一个清晰、实用的说明。
File file = new File("test.txt");
✅ File 只表示文件或目录的抽象路径
❌ 不能直接读写内容
需要配合:
FileInputStream / FileOutputStreamFileReader / FileWriterBufferedReader / BufferedWriterFilesimport java.io.*;
public class WriteFile {
public static void main(String[] args) throws IOException {
File file = new File("test.txt");
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
writer.write("Hello Java");
writer.newLine(); // 换行
writer.write("文件写入成功");
}
}
}
✅ 自动关闭流(try-with-resources)
import java.io.*;
public class ReadFile {
public static void main(String[] args) throws IOException {
File file = new File("test.txt");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}
}
import java.io.*;
public class CopyFile {
public static void main(String[] args) throws IOException {
File src = new File("a.jpg");
File dest = new File("b.jpg");
try (InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest)) {
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) != -1) {
out.write(buffer, 0, len);
}
}
}
}
import java.nio.file.*;
import java.util.*;
public class NioWrite {
public static void main(String[] args) throws Exception {
Path path = Paths.get("test.txt");
Files.write(path, Arrays.asList("第一行", "第二行"));
}
}
import java.nio.file.*;
import java.util.List;
public class NioRead {
public static void main(String[] args) throws Exception {
Path path = Paths.get("test.txt");
List<String> lines = Files.readAllLines(path);
lines.forEach(System.out::println);
}
}
✅ 代码最少
✅ 自动处理编码(默认 UTF-8)
FileReader / FileWriter 默认使用系统编码,可能乱码。
✅ 推荐写法(指定 UTF-8):
new BufferedReader(
new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8)
);
| 场景 | 推荐方式 |
|---|---|
| 小文本文件 | Files.readAllLines / write |
| 大文本文件 | BufferedReader / BufferedWriter |
| 图片、视频 | FileInputStream / FileOutputStream |
| 新项目 | ✅ NIO(Files) |
❌ File file = new File("a.txt"); file.read()
✅ File 不能直接读写
❌ 忘记关闭流
✅ 使用 try-with-resources
如果你愿意,我也可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。