一、什么是IO
指的Java的輸入和輸出操作,I/O機制是基于數據流進行輸入輸出。
java.io是大多數面向數據流的輸入輸出類的主要軟件包,此外,Java也對塊傳輸提供支持,在核心庫java.nio中采用的是快IO。
流IO簡單易用,但效率較低。塊IO效率很高,但編程比較復雜。
二、數據流分類
按照流中的數據分為:
1)字節流:數據流中最小數據單元是字節
2)字符流:數據流中最小數據單元是字符,Java的字符是Unicode編碼,一個字符占2個字節
三、IO體系層次結構
四、java.io基本類庫
1、四個基本類
2、IO框架
五、inputStream與reader,outputStream和writer差別
InputStream和OutputStream類處理的是字節流,Reader與Writer處理的是字符流,在處理字符流時涉及了字符編碼的轉換問題
Reader類能夠將輸入流中采用其他編碼類型的字符轉換為Unicode字符,然后在內存中為其分配內存;Writer類能夠將內存中的Unicode字符轉換為其他編碼類型的字符,再寫到輸出流中。
六、如何選擇IO流
1、確定數據源和數據目的(輸入/輸出)
? ? 源:輸入流 InputStream Reader
? ? 目的:輸出流 OutputStream Writer
2、明確操作的數據對象是否是純文本
? ? ?是:字符流Reader,Writer
? ? ?否:字節流InputStream,OutputStream
3、明確具體的設備。
? ? ? 1)是硬盤文件:File++:
? ? ? ? ? ?讀取:FileInputStream,, FileReader,
? ? ? ? ? ?寫入:FileOutputStream,FileWriter
? ? ? 2)是內存用數組
? ? ? ? ? ?byte[]:ByteArrayInputStream, ByteArrayOutputStream
? ? ? 3)是char[]:CharArrayReader, CharArrayWriter
? ? ? 4)是String:StringBufferInputStream(已過時,因為其只能用于String的每個字符都是8位的字符串), StringReader, StringWriter
? ? ? 5)是網絡用Socket流
? ? ? 6)是鍵盤:用System.in(是一個InputStream對象)讀取,用System.out(是一個 ? ? ? ? ? ? ? ? OutoutStream對象)打印
4、是否需要轉換流
? ? ? ?是,就使用轉換流,從Stream轉化為Reader,Writer:InputStreamReader, ? ?OutputStreamWriter
5、是否需要緩沖提高效率
? ? ? ?是就加上Buffered:BufferedInputStream, BufferedOuputStream, BuffereaReader, BufferedWriter5)是否需要格式化輸出
七、IOException異常類的子類
1.public class? EOFException :
非正常到達文件尾或輸入流尾時,拋出這種類型的異常。
2.public class FileNotFoundException:
當文件找不到時,拋出的異常。
3.public class InterruptedIOException:
當I/O操作被中斷時,拋出這種類型的異常。
參考地址:http://blog.csdn.net/hguisu/article/details/7418161