转换流--InpuStreamReader、OutputStreamWriter
类型:处理流
作用
用于将字节流转化成字符流,字符流与字节流之间的桥梁
InputStreamReader
从字节流到字符流的桥:它读取字节,并使用指定的charset
将其解码为字符 。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。
InputStreamReader 的作用是把 InputStream 转换成 Reader
OutputStreamWriter
OutputStreamWriter是字符的桥梁流以字节流:向其写入的字符编码成使用指定的字节charset
。 它使用的字符集可以由名称指定,也可以被明确指定,或者可以接受平台的默认字符集。
OutputStreamWriter 的作用是把 OutputStream 转换成 Writer
存在将字节流转换成字符流的转换流,因为字符流操作文本更简单
不存在把字符流转换成字节流的转换流,因为没有必要
代码
System.in 代表标准输入,即键盘输入,是 InputStream 的实例
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; public class TestIROW { public static void main(String[] args) { BufferedReader br=null; BufferedWriter bw=null; try { //任务需求,从键盘获取数据,写入磁盘文件 //(1)数据源是标准的输入设备,键盘System.in InputStream is=System.in; //(2)需要使用转换流,转换成字符流 InputStreamReader isr=new InputStreamReader(is, "UTF-8"); //(3)提高读取效率 br = new BufferedReader(isr); //(4)提高写入效率 bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("F://copy5.txt"), "UTF-8")); //(5)写入磁盘文件 String str=null; while(!"over".equals(str=br.readLine())) { bw.write(str); bw.newLine(); }
bw.flush(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { //(6)关闭 if(bw!=null) { try { bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(br!=null) { try { br.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } }