java IO —— 转换流详解

目录

转换流概述

InputStreamReader 字节数组转换成字符串

继承关系

构造方法

示例

OutputStreamWriter 字符串转化成字节数组

继承关系

构造方法

示例


转换流概述

特点

  • 其是字符流和字节流之间的桥梁
  • 可对读取到的字节数据经过指定编码转换成字符
  • 可对读取到的字符数据经过指定编码转换成字节

字符流和字节流的区别是什么?

字符流=字节流+编码集,

在实际读取的时候其实字符流还是按照字节来读取,但是会根据编码集进行查找编码集字典解析相应的字节,使得一次读取出一个字符。

转换流的具体对象

  • inputStreamReader :字节数组转换成字符串。
  • OutputStreamWriter:字符串转换成字节数组。


InputStreamReader 字节数组转换成字符串

继承关系

java.lang.Object
  java.io.Reader
      java.io.InputStreamReader

 InputStreamReader 继承自Reader ,它本质上是一个字符流,所以可以作为转换流的参数来提高传输效率。

构造方法

构造方法
方法功能
InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, Charset cs)  创建使用给定字符集的 InputStreamReader。
InputStreamReader(InputStream in, CharsetDecoder dec) 创建使用给定字符集解码器的 InputStreamReader
InputStreamReader(InputStream in, String charsetName) 创建使用指定字符集的 InputStreamReader。 

示例


	/**
	 * 字节流转化为字符流
	 * InputStreamReader
	 * @param path
	 */
	public static void testISR(String path){
		try {
			BufferedWriter bw = new BufferedWriter(new FileWriter(path));
			BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
			String line = "";
			while((line = br.readLine()) != null){
				bw.write(line);
				bw.newLine();
				bw.flush();
			}
			br.close();
			bw.close();
		} catch (Exception e) {
			e.printStackTrace();
		}	
	}
	//采取指定的编码读取一个文件
	public static void testReader(String path,String charset){
		try {
			BufferedReader br = new 
			BufferedReader(new InputStreamReader(new FileInputStream(path),charset));
			String line = "";
			while((line = br.readLine()) != null){
				System.out.println(line);
			}
			br.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	//采取指定的编码输出一个文件
	public static void testWriter(String path,String charset){
		try {
			BufferedWriter bw = 
			new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path),charset));
			bw.write("王佳萌是个仙女");
			bw.close();
		} catch (Exception e) {
			e.printStackTrace();
		} 
		
	}

OutputStreamWriter 字符串转化成字节数组

继承关系

java.lang.Object
  java.io.Writer
      java.io.OutputStreamWriter

 OutputStreamWriter 继承自Writer,它本质上是一个字符流,所以可以作为转换流的参数来提高传输效率。

构造方法

构造方法
方法功能
OutputStreamWriter(OutputStream out) 创建使用默认字符编码的 OutputStreamWriter。。
OutputStreamWriter(OutputStream out, Charset cs) 创建使用给定字符集的 OutputStreamWriter。
OutputStreamWriter(OutputStream out, CharsetEncoder enc)创建使用给定字符集编码器的 OutputStreamWriter。
OutputStreamWriter(OutputStream out, String charsetName)创建使用指定字符集的 OutputStreamWriter 

示例

/**
	 * OutputStreamWriter()
	 * @param path
	 */
	public static void testOSW(String path){
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(path));
			//字符流-->字节流      
	        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
	        String line = null;
	        while ((line = br.readLine())!=null) {
	            bw.write(line);
	            bw.newLine();
	            bw.flush();
	        }
	        bw.close();
	        br.close();
		} catch (Exception e) {
			e.printStackTrace();
		}       
	}

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值