Java - IO - 转换流 - InputStreamReader - OutputStreamWriter

InputStreamReader:是字节流通向字符流的桥梁,它使用指定的charset 读取字节并将其解码为字符。

OutputStreamWriter:是字符流通向字节流的桥梁:可使用指定的charset 将要写入流中的字符编码成字节。

当用字节流操作纯文本的时候,为了方便可以使用转换流,或者当涉及到字符集编码转换的时候也可以使用转换流。


分析:将一个中文字符串按照指定编码表写入到一个文件中。

   1.操作的是纯文本。要使用字符流更为方便。Writer 。

   2.是对文件的操作。想到了 File , 找到 FileWritre。

   3.可是FileWriter,使用的是默认编码表:操作系统的编码表(GBk)。不能自定义编码。

   4.马上就想到它的父类 OutputStreamWriter 转换流。

   5.其实字符流,也是由字节流通过转换流转换过来的。

      OutputStreamWriter osw = newOutputStreamWriter(new FileOutputStream("01.txt")); 和

      FileWriter fw = newFileWriter("01.txt") 是等价的。

   注意:OutputStream是一个抽象类,是不能被实例化的。。。 

   6.如果要使用高效的缓冲区装饰,那么就要想到BufferedWriter.当然有时候是多余的。。。

   BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("pan.txt"),"utf-8"));

public class IoTest3 {
	//将一个中文字符串按照指定编码表写入到一个文件中。
	public static void main(String[] args) throws IOException {		
		
		BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("pan.txt"),"utf-8"));
		bufw.write("我绝对不应该是这样的,我应该更努力...");
		bufw.close();
	}
}


分析:读取键盘录入信息并写入到,文件中。

   1.操作的是纯文本。要使用字符流更为方便。ReaderWriter

   2.源设备:键盘。想到 System.in 。是字节流,但操作的是纯文本,所以又想到了转换流:InputStreamReader

   3.目的设备:文件--硬盘。想到了FileWriter

   4.使用高效装饰一下吧:BufferedReader 和 BufferedWriter 。其实只要是涉及到键盘设备的就要想到 Buffer。因为

  Buffer 的 readLine 可以读取一行数据操作更方便。。。

public class IoTest3 {
	//将一个中文字符串按照指定编码表写入到一个文件中。
	public static void main(String[] args) throws IOException {		
		//缓冲区,缓冲转换流,转换流操作字节流。。。
		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
		//缓冲区,缓冲字符流。
		BufferedWriter bufw = new BufferedWriter(new FileWriter("p.txt"));
		
		String line = null;		
		while((line = bufr.readLine())!=null){
			if(line.equals("over"))
				break;
			bufw.write(line);
			bufw.newLine();
			bufw.flush();
		}		
	}
}

分析:读取一个文本文件,写入到控制台上。

   1.操作的纯文本数据。使用字符流,Reader 和 Writer

   2.源设备:文件--硬盘。 FileReader

   3.目的设备:显示器。System.out 。转换一下OutputStreamWriter。

   4.高效。。。

public class IoTest3 {
	public static void main(String[] args) throws IOException {		
		
		BufferedReader bufr = new BufferedReader(new FileReader("p.txt"));
		BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String line = null;
		while((line = bufr.readLine())!=null){
			bufw.write(line);
			bufw.newLine();
			bufw.flush();			
		}
	}
}

分析:读取键盘录入数据,显示在控制台上。

   1.操作的是纯文本。

   2.源:键盘 System.in

   3.目的:控制台 System.out

   4.转换

   5.高效

public class IoTest3 {
	public static void main(String[] args) throws IOException {		
		
		BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		String line = null;
		while((line = bufr.readLine())!=null){
			if(line.equals("over"))
				break;
			bufw.write(line);
			bufw.flush();			
		}
	}
}

























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值