1. 程式人生 > >Java I/O---Reader & Writer(字符流)

Java I/O---Reader & Writer(字符流)

dap alt per 讀取數據 ioe != can 創建 兩個類

1.Reader & Writer

當我們初次看見ReaderWriter類時,可能會以為這是兩個用來替代InputStreamOutputStreamt的類,但實際上並非如此。

盡管一些原始的“流”類庫不再被使用(如果使用它們,則會收到編譯器的警告信息),但是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編程思想的傳智播客課程

Java I/O---Reader & Writer(字符流)