多种流对文件的复制

本文深入探讨了Java中流的概念及其应用,包括字节流和字符流的使用,通过实例演示了如何利用不同类型的流进行文件的高效复制。对比了字节缓冲流、字符流及字符缓冲流在文件复制过程中的性能表现。

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

多种流对文件的复制

本期分享的是编程中的IO流的知识点:流有字节输入输出流和字符输入输出

字节输入流(外界—>程序)InputStream
字节输出流(程序—>外界)OutputStream
字符输入流(外界–>程序)InputStreamReader
字符输出流(程序—>外界)OutputStreamWriter
字符缓冲输入流(外界—>程序)BufferedReader
字符缓冲输出流(程序—>外界)BufferedWriter

一、复制文件需使用的流的类型

字节缓冲输入流BufferedInputStream
字节缓冲输出流BufferedOutputStream
字符输入流InputStreamReader
字符输出流OutputStreamWriter
字符缓冲输入流BufferedReader
字符缓冲输出流BufferedWriter
注:流在使用之后一定要关闭,关闭时遵循先用后关的原则

二、题目一:使用字节缓冲输入输出流复制文件

public static void main(String[] args) throws Exception {
		/**
		 * BufferedInputStream:字节缓冲输入流(外界--->程序)
		 */
		 //定义一个开始的时间
		long begin = System.currentTimeMillis();
		//创建字节输入流
		FileInputStream is = new FileInputStream("demo/test.txt");
		//创建字节输出流
		FileOutputStream os = new FileOutputStream("demo/test1.txt");
		//创建字节缓冲输入流
		BufferedInputStream bs = new BufferedInputStream(is);
		//创建字节缓冲输出流
		BufferedOutputStream bos = new BufferedOutputStream(os);
		byte[] b = new byte[1024];
		int length;
		while((length=bs.read())!=-1){
			bos.write(b,0,length);
		}
		System.out.print("字节缓冲输入输出流复制文件成功"+"\t");
		//定义一个结束的时间
		long end = System.currentTimeMillis();
		System.out.println("时间为:"+(end-begin)+"毫秒");
		//关闭流
		bos.close();
		bs.close();
		os.close();
		is.close();

三、题目二:使用字符输入输出流复制文件

/**
		 * InputStreamReader:字符输入流(外界-->程序)
		 * OutputStreamWriter:字符输出流(程序--->外界)
		 * 使用字符输入输出流复制文件
		 */
		
		long begin1 = System.currentTimeMillis();
		//创建字节输入流
		FileInputStream is1 = new FileInputStream("demo/test.txt");
		//创建字节输出流
		FileOutputStream os1 = new FileOutputStream("demo/test2.txt");
		//创建字符输入流
		InputStreamReader isr = new InputStreamReader(is1);
		//创建字符输出流
		OutputStreamWriter osw = new OutputStreamWriter(os1);
		byte[] b1 = new byte[1024];
		int length1;
		while((length1=isr.read())!=-1) {
			osw.write(length1);
		}
		System.out.print("使用字符输入输出流复制文件成功"+"\t");
		long end1 = System.currentTimeMillis();
		System.out.println("时间为:"+(end1-begin1)+"毫秒");
		osw.close();
		isr.close();
		os1.close();

四、题目三:使用字符缓冲输入输出流复制文件

long begin2 = System.currentTimeMillis();
		//使用字符缓冲输入输出流复制文件
		BufferedReader br = new BufferedReader(
				new InputStreamReader(
						new FileInputStream("demo/斗破苍穹1.txt")));
		BufferedWriter bw = new BufferedWriter(
				new OutputStreamWriter(
						new FileOutputStream("demo/斗破苍穹2.txt")));
		//文件复制
		int length2;
		while((length2=br.read())!=-1){
			bw.write(length2);
		}
		System.out.print("符缓冲输入输出流复制文件成功"+"\t");
		long end2 = System.currentTimeMillis();
		System.out.println("时间为:"+(end2-begin2)+"毫秒");
		bw.close();
		br.close();
	}
}

我的几个题目的作业都是写在一个main方法里面的,所以在看的时候要注意一下~~

五、运行结果展示
在这里插入图片描述
在这里插入图片描述

今天的分享就到此结束了,流这一块一开始接触的时候会有点伤脑的,所以在学习的时候要花的功夫多一点,祝各位小伙伴都能轻松搞定每一块的学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值