IO流(1)——输入输出流的构造及available()的应用

本文详细介绍了Java中的IO流概念及分类,包括输入流与输出流、字节流与字符流等,并通过具体示例展示了如何使用FileInputStream和FileOutputStream进行文件读写与复制。

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

IO流

分类:

*按流向分为:输入流、输出流。
*按操作类型分为:
字节流:可以操作任何数据,因为在计算机中任何数据都是以字节的形式存储的。
字符流:只能操作字符数据,比较方便。

父类:

*字节流的抽象父类:
InputStream
OutputStram
*字符流的抽象父类:
Reader
Writer

FileInputStream 

FileInputStream fis = new FileInputStream("aaa.txt");	//创建一个文件输入流对象,并关联aaa.txt
		int b;					//定义变量,记录每次读到的字节
		while((b = fis.read()) != -1) {		//将每次读到的字节赋值给b并判断是否是-1
			System.out.println(b);		//打印每一个字节
		}
		
		fis.close();

FileOutputStream

FileOutputStream fos = new FileOutputStream("bbb.txt");	//如果没有bbb.txt,会创建出一个
		//fos.write(97);			//虽然写出的是一个int数,但是在写出的时候会将前面的24个0去掉,所以写出的一个byte
		fos.write(98);
		fos.write(99);
		fos.close();

FileOutputStream(追加)
* FileOutputStream的构造方法写出数据如何实现数据的追加写入
FileOutputStream fos = new FileOutputStream("bbb.txt",true);	//如果没有bbb.txt,会创建出一个
		//fos.write(97);						//虽然写出的是一个int数,但是在写出的时候会将前面的24个0去掉,所以写出的一个byte
		fos.write(98);
		fos.write(99);
		fos.close();

拷贝图片

FileInputStream fis = new FileInputStream("致青春.mp3");	//创建输入流对象,关联致青春.mp3
		FileOutputStream fos = new FileOutputStream("copy.mp3");//创建输出流对象,关联copy.mp3
		
		int b;
		while((b = fis.read()) != -1) {
			fos.write(b);
		}
		
		fis.close();
		fos.close();

available()方法

* int read(byte[] b):一次读取一个字节数组
* write(byte[] b):一次写出一个字节数组
* available()获取读的文件所有的字节个数

但是:有可能导致内存溢出 
FileInputStream fis = new FileInputStream("致青春.mp3");
		FileOutputStream fos = new FileOutputStream("copy.mp3");
		byte[] arr = new byte[fis.available()];					//根据文件大小做一个字节数组
		fis.read(arr);											//将文件上的所有字节读取到数组中
		fos.write(arr);											//将数组中的所有字节一次写到了文件上
		fis.close();
		fos.close();













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值