转换流
InputStreamReader 和 OutputStreamWriter
处理流
用于将字节流转化成字符流,字符流与字节流之间的桥梁
InputStreamReader 的作用是把 InputStream 转换成 Reader
OutputStreamWriter 的作用是把 OutputStream 转换成 Writer
存在将字节流转换成字符流的转换流,因为字符流操作文本
更简单
不存在把字符流转换成字节流的转换流,因为没有必要
System.in 代表标准输入,即键盘输入,是 InputStream 的实
例
1 import java.io.BufferedReader; 2 import java.io.BufferedWriter; 3 import java.io.FileNotFoundException; 4 import java.io.FileOutputStream; 5 import java.io.IOException; 6 import java.io.InputStream; 7 import java.io.InputStreamReader; 8 import java.io.OutputStreamWriter; 9 import java.io.UnsupportedEncodingException; 10 11 public class TestInputStreamReader { 12 13 public static void main(String[] args) { 14 //任务需求,从键盘获取数据,写入磁盘文件 15 //(3)提高读取效率 16 BufferedReader br = null; 17 //(4)提高写入效率 18 BufferedWriter bw = null; 19 try { 20 //(1)数据源是标准的输入设备,键盘System.in 21 InputStream is = System.in; 22 //(2)需要使用转换流,转换成字符流 23 InputStreamReader isr = new InputStreamReader(is,"gbk"); 24 br = new BufferedReader(isr); 25 bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("D:\\systein.txt"))); 26 //(5)写入磁盘文件 27 String line = null; 28 while(!"over".equals((line=br.readLine()))) {//键盘输入over表示结束 29 bw.write(line); 30 bw.newLine(); 31 bw.flush(); 32 } 33 } catch (UnsupportedEncodingException e) { 34 // TODO 自动生成的 catch 块 35 e.printStackTrace(); 36 } catch (FileNotFoundException e) { 37 // TODO 自动生成的 catch 块 38 e.printStackTrace(); 39 } catch (IOException e) { 40 // TODO 自动生成的 catch 块 41 e.printStackTrace(); 42 }finally { 43 //(6)关闭 44 if(bw != null) { 45 try { 46 bw.close(); 47 } catch (IOException e) { 48 // TODO 自动生成的 catch 块 49 e.printStackTrace(); 50 } 51 } 52 if(br != null) { 53 try { 54 br.close(); 55 } catch (IOException e) { 56 // TODO 自动生成的 catch 块 57 e.printStackTrace(); 58 } 59 } 60 } 61 } 62 }