1.Reader & Writer
当我们初次看见Reader和Writer类时,可能会以为这是两个用来替代InputStream和OutputStreamt的类,但实际上并非如此。
尽管一些原始的“流”类库不再被使用(如果使用它们,则会收到编译器的警告信息),但是InputStream和OutputStreamt在以 面向字节形式的I/O中仍可以提供极有价值的功能,Reader和Writer提供兼容Unicode与面向字符的I/O功能。
有时我们必须把来自于 “字节” 层次结构中的类和 “字符 ” 层次结构中的类结合起来使用(实现字节和字符的转化)。 为了实现这个目的,要用到 “适配器” ( adapter )类: lnputStreamReader(子类FileReader)可以把 InputStream转换为Reader(字节转化为字符),而 OutputStreamWriter(子类FileWriter)可以把OutputStream转换Writer(字符转化为字节)。
Java I/O---字符与字节转换流---FileReader&FileWriter
2. BufferedReader & BufferedWriter
两个类实现字符流缓冲
1 public class CharStreamBufferDemo { 2 3 /** 4 * @param args 5 * @throws IOException 6 */ 7 public static void main(String[] args) throws IOException { 8 9 /* 10 * 演示字符流的缓冲区。 11 * BufferedReader 12 * BufferedWriter 13 */ 14 // writeTextByBuffered(); 15 readTextBuffered(); 16 17 // 读取键盘录入专业。Scanner=流+正则表达式。方法都是按照某种规则在读取数据。 18 // BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in)) 19 // bufr.readLine(); 20 } 21 22 public static void readTextBuffered() throws IOException { 23 24 FileReader fr = new FileReader("tempfile\\bufw.txt");//将字节转化为字符 25 26 BufferedReader bufr = new BufferedReader(fr); 27 28 String line = null; 29 while((line=bufr.readLine())!=null){ 30 31 System.out.println(line); 32 33 } 34 35 /*String line1 = bufr.readLine(); 36 System.out.println(line1); 37 String line2 = bufr.readLine(); 38 System.out.println(line2); 39 String line3 = bufr.readLine(); 40 System.out.println(line3); 41 String line4 = bufr.readLine(); 42 System.out.println(line4); 43 String line5 = bufr.readLine(); 44 System.out.println(line5);*/ 45 46 bufr.close(); 47 48 } 49 50 public static void writeTextByBuffered() throws IOException { 51 52 //1,明确目的。 53 FileWriter fw = new FileWriter("tempfile\\bufw.txt");//将字符转为字节 54 55 //2,创建缓冲区对象。明确要缓冲的流对象。 56 BufferedWriter bufw = new BufferedWriter(fw); 57 58 for(int x=1; x<=4; x++){ 59 60 bufw.write(x+"abc"); 61 bufw.newLine(); 62 bufw.flush(); 63 } 64 65 // bufw.write("abc"); 66 // bufw.newLine();//System.getProperty("line.separator"); 67 // bufw.write("hello"); 68 bufw.close(); 69 70 } 71 72 } 73
2017-12-31
内容来自java编程思想的传智播客课程