IO流分类以及分别使用字节流、字符流复制文本文件、复制图片


前言

IO流分类:
*流向
输入流 读取数据 FileReader Reader
输出流 写出数据 FileWriter Writer
*数据类型

  • 字节流
    字节输入流 读取数据 InputStream
    字节输出流 写出数据 OutputStream
  • 字符流
    字符输入流 读取数据 Reader
    字符输出流 写出数据 Writer。

一、分别使用字节流、字符流复制文本文件

//创建字符输入流对象
FileReader fr = new FileReader("IODemo.java");
//创建字符输出流对象
FileWriter fw = new FileWriter("d:\\IODemo.java");
//一次读写一个字符
/*
int ch;
while((ch = fr.read()) != -1) {
	fw.write(ch);
	fw.flush();
}*/
//一次读写一个字符数组
int len;//用于存储读到的字符个数
char[] chs = new char[1024];
while((len = fr.read(chs)) != -1) {
	fw.write(chs,0,len);
	fw.flush();
}
//释放资源
fw.close();
fr.close();
//创建字节输入流对象
FileInputStream fis = new FileInputStream("IODemo.java");
//创建字节输出流对象
FileOutputStream fos = new FileOutputStream("d:\\IODemo.java");

//一次读写一个字节
/*int by;
while((by = fis.read()) != -1) {
	fos.write(by);
}*/
//一次读写一个字节数组
int len;//存储读到的字节个数
byte[] bys = new byte[1024];
while((len = fis.read(bys)) != -1) {
	fos.write(bys,0,len);
}


//释放资源
fos.close();
fis.close();

二、分别使用字节流、字符流复制图片文件

1.字符流可以复制图片,但是打不开,报错

/**
* 字符流
* @throws FileNotFoundException
* @throws IOException
*/
private static void method() throws FileNotFoundException, IOException {
	//创建字符输入流对象
	FileReader fr = new FileReader("图片.jpg");
	//创建字符输出流对象
	FileWriter fw = new FileWriter("d:\\图片.jpg");
	//一次读写一个字符数组
	int len;//用于存储读到的字符个数
	char[] chs = new char[1024];
	while((len = fr.read(chs)) != -1) {
		fw.write(chs,0,len);
		fw.flush();
	}
	//释放资源
	fw.close();
	fr.close();
}

2.字节流可以复制图片,正常使用

/**
* 字节流
 * @throws FileNotFoundException
 * @throws IOException
 */
private static void method2() throws FileNotFoundException, IOException {
	//创建字节输入流对象
	FileInputStream fis = new FileInputStream("图片.jpg");
	//创建字节输出流对象
	FileOutputStream fos = new FileOutputStream("d:\\图片.jpg");
	
	//一次读写一个字节数组
	int len;//用于存储读到的字节个数
	byte[] bys = new byte[1024];
	while((len = fis.read(bys)) != -1) {
		fos.write(bys,0,len);
	}
	
	//释放资源
	fos.close();
	fis.close();
}


总结

  • 二进制文件只能使用字节流进行复制,图片、视频(使用windows自带记事本打开读不懂的)
  • 文本文件的复制既可使用字符流,也可以使用字节流
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值