Java文件复制:字符缓冲流和字节缓冲流的实现
作者:2401_88461221
本文主要介绍了Java文件复制的实现,包括字符缓冲流 和 字节缓冲流,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
做作业时经常要复制文件,Java提供了两种好用的方式:
- 文本文件 → 用字符缓冲流(BufferedReader / BufferedWriter)
- 任何文件(图片、视频等)→ 用字节缓冲流(BufferedInputStream / BufferedOutputStream)
缓冲流就像一个大水桶,一次多装点水,比一滴一滴倒快得多。
1. 文本文件复制(字符缓冲流)
适用于 .txt、.java 等纯文本文件。
思路:
把上面两段代码拷贝到你的IDE里,改一下文件名,就能直接运行啦。作业搞定!😊
- 用 BufferedReader 读取源文件(按行读)
- 用 BufferedWriter 写入目标文件
记得关闭资源
import java.io.*;
public class TextCopy {
public static void main(String[] args) {
try (
BufferedReader br = new BufferedReader(new FileReader("source.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("target.txt"));
) {
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine(); // 换行
}
System.out.println("文本复制成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}2. 任意文件复制(字节缓冲流)
不管是图片、音乐、压缩包,统统可以用字节流复制,它是万能的。
思路:
- 用
BufferedInputStream读取源文件(一次读一个字节数组) - 用
BufferedOutputStream写入目标文件 - 用
byte[]数组当缓冲区,效率更高
import java.io.*;
public class AnyCopy {
public static void main(String[] args) {
try (
BufferedInputStream bis = new BufferedInputStream(new FileInputStream("photo.jpg"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("photo_copy.jpg"));
) {
byte[] buffer = new byte[8192]; // 8KB的小桶
int len;
while ((len = bis.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
System.out.println("任意文件复制成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}总结对比
| 类型 | 用什么流 | 适合文件 |
|---|---|---|
| 文本复制 | BufferedReader + BufferedWriter | 文本文件(.txt, .java等) |
| 任意文件复制 | BufferedInputStream + BufferedOutputStream | 所有文件(图片、视频、exe等) |
记住:
- 文本用字符流(方便按行读)
- 其他用字节流(万能)
- 加缓冲能提速,一定要用!
到此这篇关于Java文件复制:字符缓冲流 和 字节缓冲流的实现的文章就介绍到这了,更多相关Java文件复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
