缓冲区方法实现复制文件

要求:将C:\\Demo\\demo.txt文件复制到D:\\Java路径下。

字符流实现文件复制相对来讲比较麻烦,并且效率较差。

如果使用缓冲区方法就可以提高效率。

这是因为:缓冲区方法可以一次读取一整行的源文件数据,并将读取到的数据存在内存,然后在写入的时候直接从内存取得数据写入目的地,这就大大提高了存取的效率。

下面讨论缓冲区方法实现文件的复制:

基本思路:

1,使用字符流FileReader类对象读取源文件数据;

2,初始化一个读数据缓冲区,并关联读字符流对象;

3,初始化写字符流对象,用于将数据写入写数据缓冲区;

4,初始化一个写数据缓冲区,并关联写字符流对象;

5,将读数据缓冲区的字符数据写入写数据缓冲区中,再通过写数据缓冲区对象的write()方法将数据写入目的地。

实现过程:

//初始化流对象并关联缓冲区
FileReader fr = new FileReader("C:\\src\\test.txt");
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter("C:\\dest\\copy_test.txt");
BufferedWriter bw = new BufferedWriter(fw);
int ch = 0;
//判断缓冲区数据是否结束
while((ch = br.read()) != -1)
{
	bw.write(ch);
}
bw.close();
br.close();

也可以使用以下方法进行读取/写入:

String line = null;
while((line = br.readLine()) != null)
{
	bw.write(line);
}

但是此时发现,源文件中的换行在目标文件中消失了。
这是因为缓冲区read()方法在读取硬盘数据时,当遇到换行符时跳过该类符号读取。
所以从缓冲区读取数据并写入时并没有换行符号,因此复制的字符写入到目的地时显示无换行。
修改办法:在缓冲区写入数据时,调用newLine()方法实现换行,并刷新缓冲区。

bw.write(line);
bw.newLine();
bw.flush();	//使用缓冲区时一定要记得刷新缓冲区。

文件复制完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值