字节流复制文件的步骤
- 创建字节输入流对象,构造方法中绑定要读取的数据源
- 创建字节输出流对象,构造方法中绑定输出的文件目的地
- 为了增加输出效率,可以使用一个字节数组
- 使用FileInputStream对象的方法read读取数据
- 使用FileOutputStream对象的方法write将数据写入文件
- 释放资源
代码如下:
package com.xatu.day2.demo02.CopyFile;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo02CopyFile {
public static void main(String[] args) throws IOException {
long b = System.currentTimeMillis();
//创建字节输入流对象
FileInputStream fis = new FileInputStream("C:\\Java核心技术卷1基础知识原书第10版.pdf");
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("D:\\Java核心技术卷1基础知识原书第10版.pdf");
//使用字节缓冲输入流对象中的方法read读取文件
byte[] bytes = new byte[1024];
int len = 0;
while ((len = fis.read(bytes))!=-1){
//使用字节缓冲输出流中的方法write,把读取的数据写入到内部缓冲区中
fos.write(bytes,0,len);
}
//释放资源
fos.close();
fis.close();
long e = System.currentTimeMillis();
System.out.println("使用字节流复制文件共耗时"+(e-b)+"毫秒");
}
}
一个大小为183M的PDF文件复制耗时了1299毫秒
字节缓冲流复制文件步骤
- 创建字节缓冲输入流对象,构造方法中传递字节输入流
- 创建字节缓冲输出流对象,构造方法中传递字节输出流
- 使用字节缓冲输入流对象中的read方法读取文件
- 使用字节缓冲输出流中对象中的write方法,把读取的数据写入内部缓冲区中
- 释放资源
代码如下:
public class Demo01CopyFile {
public static void main(String[] args) throws IOException {
long b = System.currentTimeMillis();
//创建字节缓冲输入流对象,构造方法中传递字节输入流
FileInputStream fis = new FileInputStream("C:\\Java核心技术卷1基础知识原书第10版.pdf");
BufferedInputStream bis = new BufferedInputStream(fis);
//创建字节缓冲输出流对象,构造方法中传递字节输出流
FileOutputStream fos = new FileOutputStream("D:\\Java核心技术卷1基础知识原书第10版.pdf");
BufferedOutputStream bos = new BufferedOutputStream(fos);
//使用字节缓冲输入流对象中的方法read读取文件
byte[] bytes = new byte[1024];
int len = 0;
while ((len = bis.read(bytes))!=-1){
//使用字节缓冲输出流中的方法write,把读取的数据写入到内部缓冲区中
bos.write(bytes,0,len);
}
//释放资源
bos.close();
bis.close();
long e = System.currentTimeMillis();
System.out.println("使用缓冲流复制文件共耗时"+(e-b)+"毫秒");
}
}
复制同一个文件,使用字节缓冲输出流则只花费了295毫秒,不难看出,加了缓冲区后,效率大大提高了