IO流详解(三)转换流

第一章节我们讨论了,字符串文本操作是很常见的需求jdk帮我们封装好了一些操作字符流的reader和writer。普通的FileReader和FileWriter都是默认平台的编码方式。 当我们想用特殊的编码格式的writer和reader就需要使用今天所讲的转换流OutputStreamWriter和InputstreamReader。


InputStreamReader和OutputStreamWriter
思考:我们键盘录入都是字节流录入的,一次读一个肯定太麻烦了。我们知道有字符流BufferReader有一个readLine方法,如果一次读一行的话是不是就轻松很多了。 但是! 字节流没有这个方法 我们想通过 BufferedReader,来装饰InputStream,很明显是不行的。
这时候就jdk为我们提供了  InputStreamReader,字节流通向字符流的桥梁。其实字符流的底层就是InputStreamReader。
public class TransStreamDemo {
	
	public static void main(String[] args) throws IOException {
		
		InputStream in = System.in;
		OutputStream out = System.out;
		
		/*
		 * 将字节转字符的桥梁,读就是把看不懂的变成看的懂的。 解码
		 * 这样,我们操作起来就方便一点
		 */
		InputStreamReader isr = new InputStreamReader(in);
		
		/*
		 * 将字符转向字节的桥梁,写就是把看的懂的变成看不懂的。 编码
		 * 这样,我们存起来方便一点,因为文件都是存放二进制,就省去了wirte("Tig".getBytes());
		 */
		OutputStreamWriter osw = new OutputStreamWriter(out);
		
		//字符流
		BufferedReader burf = new BufferedReader(isr);
		BufferedWriter bufw = new BufferedWriter(osw);
		
		String line = null;
		
		while ( (line = burf.readLine()) != null) {
			if ("exit".equals(line)) {
				break;
			}
			bufw.write(line.toUpperCase());
			bufw.newLine();
			bufw.flush();
		}
	}
}
指定编码格式
指定编码格式操作就很简单的,直接早构造器中加入编码格式就可以了。网上很多人提到的说io出现乱码,基本用转换流都能解决
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("gbk_3.txt"), "GBK");
InputStreamReader isr = new InputStreamReader(new FileInputStream("gbk_3.txt"), "GBK");
剩下的操作就大同小异了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值