字符流方法实现复制文件

本文介绍了一种利用字符流提高文件复制效率的方法。通过对比传统的逐字符复制,展示了每次读取和写入1024个字符的方式能显著提升复制速度,从而实现D:\Java路径下copy_demo.txt文件的高效复制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

文档复制过程其实就是对文档的读写过程,先读取源数据,将读取到的数据保存在字符流中,然后写入到目的文件。

操作步骤:

//读取一个已有的文本文件,使用字符读取流和文件进行关联
FileReader fr = new FileReader("C:\\Demo\\demo.txt");
//创建一个目的存储文件,用于存储读取到的数据
FileWriter fw = new FileWriter("D:\\Java\\copy_demo.txt");
//频繁读取操作
int ch = 0;
while((ch = fr.read()) != -1)
{
	fw.write(ch);
}
//关闭流资源
fw.close();
fr.close();

运行程序,查看文件Copy情况,在D:\\Java路径下出现copy_demo.txt文档,文件复制成功。

但是使用上边的方法读取较慢,每次只能读取到一个字符,所以可以使用一下方法进行改进:

FileReader fr = null;
FileWriter fw = null;
try
{
	//创建读写流对象
	fr = new FileReader("C:\\Demo\\demo.txt");
	fw = new FileWriter("D:\\Java\\copy_demo.txt");
	//创建一个临时容器用于缓存读取到的字符
	char[] buf = new char[1024];
			
	//定义一个变量,记录读取到的字符数
	int len = 0;
			
	while((len = fr.read(buf)) != -1)
	{
		fw.write(buf, 0, len);
	}
}
catch(Exception e)
{
	//若读写失败,抛出异常
	throw new RuntimeException("读写失败");
}

关闭流对象:

finally
{
	//当文件读写完毕才能关闭流对象
	if(fw != null)
		try {
			fr.close();
		} catch (IOException e) {
		e.printStackTrace();
		}
	if(fr != null)
		try
		 {
			fr.close();
		}
		 catch (IOException e) 
		{
			e.printStackTrace();
		}			
}

上边的方法和下边的进行比较,下边的显然要比上边的效率高很多:

上边的方法每读一个字符进行一次写入;

下边的方法每次读取1024个字符,然后一次又写入1024个数据。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值