Java使用缓存流进行文件的复制
本文最后更新于:1 年前
1- 准备要复制的文件路径和复制后的路径
private static final String FilePath1 = "D:/测试文件.txt";
private static final String FilePath2 = "D:/测试文件_副本.txt";
2 - 导入IO库
import java.io.*;
3 - 拷贝方法
/**
* 使用缓存流拷贝文件
* @return 拷贝的耗时
*/
private static long copyFileByBufferedStream() throws IOException {
File file = new File(FilePath1);
if (!file.exists()){
System.out.println("文件不存在,复制失败!");
}
// 记录开始时间
long startTime = System.currentTimeMillis();
// 读取的缓存流
InputStream inputStream = new FileInputStream(file);
BufferedInputStream bInStream = new BufferedInputStream(inputStream);
// 写入的缓存流
OutputStream outputStream = new FileOutputStream(FilePath2);
BufferedOutputStream bOutStream = new BufferedOutputStream(outputStream);
// 逐个字节的复制
int i = 1; // 读取的临时变量
while ((i = bInStream.read()) != -1){
bOutStream.write(i); // 读取一个字节,就写入缓存中!
}
// 注意,一定要关闭缓存流对象,清空缓冲区,这样才可以复制成功
bInStream.close();
bOutStream.close();
System.out.println("文件复制成功!");
return System.currentTimeMillis() - startTime;
}
使用缓存流,在比较大的文件中可以看到明显的效率提升
4 - 完整的代码
import java.io.*;
public class BufferedStreamDemo {
private static final String FilePath1 = "D:/测试文件.txt";
private static final String FilePath2 = "D:/测试文件_副本.txt";
public static void main(String[] args) throws IOException {
long time = copyFileByBufferedStream();
System.out.println("拷贝耗时: " + time + "毫秒";
}
/**
* 使用缓存流拷贝文件
* @return 拷贝的耗时
*/
private static long copyFileByBufferedStream() throws IOException {
File file = new File(FilePath1);
if (!file.exists()){
System.out.println("文件不存在,复制失败!");
}
// 记录开始时间
long startTime = System.currentTimeMillis();
// 读取的缓存流
InputStream inputStream = new FileInputStream(file);
BufferedInputStream bInStream = new BufferedInputStream(inputStream);
// 写入的缓存流
OutputStream outputStream = new FileOutputStream(FilePath2);
BufferedOutputStream bOutStream = new BufferedOutputStream(outputStream);
// 逐个字节的复制
int i = 1; // 读取的临时变量
while ((i = bInStream.read()) != -1){
bOutStream.write(i); // 读取一个字节,就写入缓存中!
}
// 注意,一定要关闭缓存流对象,清空缓冲区,这样才可以复制成功
bInStream.close();
bOutStream.close();
System.out.println("文件复制成功!");
return System.currentTimeMillis() - startTime;
}
}
5 - 输出示例
文件复制成功!
拷贝耗时: 4019毫秒
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!