關於 io

找了篇博客 http://blog.csdn.net/hguisu/article/details/7418161數組

1、按I/O類型來整體分類:緩存

     1. Memory 1)從/向內存數組讀寫數據: CharArrayReader、 CharArrayWriter、ByteArrayInputStream、ByteArrayOutputStream
                   2)從/向內存字符串讀寫數據 StringReader、StringWriter、StringBufferInputStream
     2.Pipe管道  實現管道的輸入和輸出(進程間通訊): PipedReader、PipedWriter、PipedInputStream、PipedOutputStream
     3.File 文件流。對文件進行讀、寫操做 :FileReader、FileWriter、FileInputStream、FileOutputStream
     4. ObjectSerialization 對象輸入、輸出 :ObjectInputStream、ObjectOutputStream
     5.DataConversion數據流 按基本數據類型讀、寫(處理的數據是Java的基本類型(如布爾型,字節,整數和浮點數)):DataInputStream、DataOutputStream
     6.Printing 包含方便的打印方法 :PrintWriter、PrintStream
     7.Buffering緩衝  在讀入或寫出時,對數據進行緩存,以減小I/O的次數:BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream
     8.Filtering 濾流,在數據進行讀或寫時進行過濾:FilterReader、FilterWriter、FilterInputStream、FilterOutputStream過
     9.Concatenation合併輸入 把多個輸入流鏈接成一個輸入流 :SequenceInputStream 
    10.Counting計數  在讀入數據時對行記數 :LineNumberReader、LineNumberInputStream
    11.Peeking Ahead 經過緩存機制,進行預讀 :PushbackReader、PushbackInputStream
    12.Converting between Bytes and Characters 按照必定的編碼/解碼標準將字節流轉換爲字符流,或進行反向轉換(Stream到Reader,Writer的轉換類):InputStreamReader、OutputStreamWriter網絡

、按數據來源(去向)分類: 
一、File(文件): FileInputStream, FileOutputStream, FileReader, FileWriter 
二、byte[]:ByteArrayInputStream, ByteArrayOutputStream 
三、Char[]: CharArrayReader, CharArrayWriter 
四、String: StringBufferInputStream, StringReader, StringWriter 
五、網絡數據流:InputStream, OutputStream, Reader, Writer ui

 

 

 如何選擇IO流編碼

 

    1)肯定是數據源和數據目的(輸入仍是輸出)spa

              源:輸入流 InputStream Reader
              目的:輸出流 OutputStream Writer.net

    2)明確操做的數據對象是不是純文本對象

             是:字符流Reader,Writer
             否:字節流InputStream,OutputStreamblog

    3)明確具體的設備。進程

             是硬盤文件:File++:

             讀取:FileInputStream,, FileReader, 

              寫入:FileOutputStream,FileWriter
             是內存用數組

                  byte[]:ByteArrayInputStream, ByteArrayOutputStream
                  是char[]:CharArrayReader, CharArrayWriter
             是String:StringBufferInputStream(已過期,由於其只能用於String的每一個字符都是8位的字符串), StringReader, StringWriter
             是網絡用Socket流

             是鍵盤:用System.in(是一個InputStream對象)讀取,用System.out(是一個OutoutStream對象)打印

    3)是否須要轉換流

            是,就使用轉換流,從Stream轉化爲Reader,Writer:InputStreamReader,OutputStreamWriter 

    4)是否須要緩衝提升效率

       是就加上Buffered:BufferedInputStream, BufferedOuputStream, BuffereaReader, BufferedWriter
    5)是否須要格式化輸出

 

例:將一個文本文件中數據存儲到另外一個文件中。
     1)數據源和數據目的:讀取流,InputStream Reader  輸出:OutputStream Writer
     2)是否純文本:是!這時就能夠選擇Reader Writer。
     3)設備:是硬盤文件。Reader體系中能夠操做文件的對象是 FileReader FileWriter。

            FileReader fr = new FileReader("a.txt");  

             FileWriter fw = new FileWriter("b.txt");        4)是否須要提升效率:是,加Buffer              BufferedReader bfr = new BufferedReader(new FileReader("a.txt");  );                BufferedWriter bfw = new BufferedWriter(new FileWriter("b.txt");  ); 

相關文章
相關標籤/搜索