Java中io流的学习(四)InputStreamReader和OutputStreamWriter

InputStreamReader(字符输入转换流)继承于Reader,OutputStreamWriter(字符输出转换流)继承于Writer。它们是字节流和字符流之间的“桥梁”。我们只需要记住,当要操作字节和字符串时,用着两个当纽带来操作。

有些人学过FileReader和FileWriter可能就有点懵了,因为感觉都是字符啥的,为啥搞这么麻烦。这样来说吧,一个字节是8位,而一个字符在GBK编码下占2个字节,即16位,在UTF-8编码下占三个字节,即24位。InputStreamReader和OutputStreamWriter作用于字节,而FileReader和FileWriter作用于字符,显然两者直接作用有差别的。

这两者的常用方法是:read(),读取单个字符;read(char[] cbuf,int off,int len),将字符读入数组中的某一部分;write(int c),写入单个字符;write(char[] cbuf,int off,int len),写入字符数组的某一部分;write(String str,int off,int len),写入字符串的某一部分;close()关闭该流。

下面我们通过实例代码来对其进行学习:

①进行文件的拷贝

	@Test
	public void t1() throws Exception{
		InputStreamReader isr = new InputStreamReader(new FileInputStream("H:\\javaio\\copy01.txt"));
		OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("H:\\javaio\\copy02.txt"));
		char[] cbuf = new char[1024];
		int len;
		while((len = isr.read(cbuf)) != -1){
			osw.write(cbuf, 0, len);
		}
		osw.close();
		isr.close();
	}

②向文件写入数据,并设置写入编码的格式

	@Test
	public void t2() throws Exception{
		OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("H:\\javaio\\test.txt"),"GBK");
		osw.write("我是测试用例!");
		osw.close();
	}

 ③读取文件

	@Test
	public void t3() throws Exception{
		InputStreamReader isr = new InputStreamReader(new FileInputStream("H:\\javaio\\test.txt"),"GBK");
		char[] cbuf = new char[1024];
		int len;
		while((len = isr.read(cbuf)) != -1){
			System.out.println(new String(cbuf,0,len));
		}
		isr.close();
	}

猜你喜欢

转载自blog.csdn.net/qq_41061437/article/details/81745300
今日推荐