java筆記——io流

首先這篇文章還是不錯的,可以當目錄看看: http://blog.csdn.net/jiangwei0910410003/article/details/22376895

然後我按照極客學院上的io教學視頻來學的,感覺還不錯。

www.jikexueyuan.com/course/215.html

1,字節流讀寫文件,直接操作即可,而且帶緩衝區的方法效率非常高,1000倍。
2,字符流讀寫文件,最後一行可能會寫(讀)入多餘的數據,(上一次最後的數據,這次並沒有讀到),所以要用l記錄
char[] input;
     while( (l=isr.read(input)) != -1){
          osw.write(input, 0, l);     //從第0個開始讀,一共讀l個。
     }
親測,字節的也得這麼弄!!
一般來說,字節流讀取文件直接上字節數組,緩衝區讀大文件(圖片,視頻等)。字符流主要讀寫字符文件,一般用FileReader,InputStreamReader打開,用帶緩衝區的BufferedReader來包裝string來操作。一讀直接讀一行。寫的話printWriter還不錯,打印輸出,很靈活。

3,緩衝流,不管字節還是字符,最後如果沒有把緩衝區寫滿,可能不會自己向磁盤寫出,後面加上flush();強制輸出。PrintWriter的構造函數可以指定是否每次都強制輸出

4,關閉文件流:先打開,後關閉
5,RandomAccessFile,隨機讀寫文件的類,應用於多線程文件讀寫,下載,傳輸,指定內容讀寫。利用好seek,讀寫函數很多。
6,apache的commons庫,這個有好多io函數,url下載文件,文件複製,文件架操作,文件直接讀到string等等,正常寫要好多行,人家都給你用靜態函數寫好了,直接用就行,連對象都不用new。

下面的原則摘自上面的博客中

(三)Java IO 的一般使用原則 :  

一、按數據來源(去向)分類:

1 、是文件: FileInputStream, FileOutputStream, ( 字節流 )FileReader, FileWriter( 字符 )

2 、是 byte[] : ByteArrayInputStream, ByteArrayOutputStream( 字節流 )

3 、是 Char[]: CharArrayReader, CharArrayWriter( 字符流 )

4 、是 String: StringBufferInputStream, StringBufferOuputStream ( 字節流 )StringReader, StringWriter( 字符流 )

5 、網絡數據流: InputStream, OutputStream,( 字節流 ) Reader, Writer( 字符流 )


二、按是否格式化輸出分:

1 、要格式化輸出: PrintStream, PrintWriter


三、按是否要緩衝分:

1 、要緩衝: BufferedInputStream, BufferedOutputStream,( 字節流 ) BufferedReader, BufferedWriter( 字符流 )


四、按數據格式分:

1 、二進制格式(只要不能確定是純文本的) : InputStream, OutputStream 及其所有帶 Stream 結束的子類

2 、純文本格式(含純英文與漢字或其他編碼方式); Reader, Writer 及其所有帶 Reader, Writer 的子類


五、按輸入輸出分:

1 、輸入: Reader, InputStream 類型的子類

2 、輸出: Writer, OutputStream 類型的子類


六、特殊需要:

1 、從 Stream 到 Reader,Writer 的轉換類: InputStreamReader, OutputStreamWriter

2 、對象輸入輸出: ObjectInputStream, ObjectOutputStream

3 、進程間通信: PipeInputStream, PipeOutputStream, PipeReader, PipeWriter

4 、合併輸入: SequenceInputStream

5 、更特殊的需要: PushbackInputStream, PushbackReader, LineNumberInputStream, LineNumberReader



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章