IO流總結(jié)

概念

* IO流用來處理設(shè)備之間的數(shù)據(jù)傳輸

* Java對數(shù)據(jù)的操作是通過流的方式

* Java用于操作流的類都在IO包中

* 流按流向分為兩種:輸入流,輸出流。

* 流按操作類型分為兩種:

* 字節(jié)流 : 字節(jié)流可以操作任何數(shù)據(jù),因為在計算機中任何數(shù)據(jù)都是以字節(jié)的形式存儲的

* 字符流 : 字符流只能操作純字符數(shù)據(jù),比較方便。

字節(jié)流

|--InputStream(字節(jié)輸入流,字節(jié)流的抽象父類,抽象類不能直接創(chuàng)建對象,必須使用子類)

|--FileInputStream(文件字節(jié)輸入流,就是以字節(jié)的形式讀取文件內(nèi)容)

|--read()每次讀取一個字節(jié)(byte),但是返回值類型,為int類型,防止出現(xiàn)文件提前結(jié)束

|--read(byte[] b)每次讀取多個字節(jié),將內(nèi)容放入字節(jié)數(shù)組b中

|--BufferedInputStream(字節(jié)輸入緩沖流,其實就是一個包裝類,創(chuàng)建對象時要接收一個InputStream,內(nèi)部封裝了一個1024*8的字節(jié)數(shù)組)

|--使用BufferedInputStream就不用再定義數(shù)組了

|--OutputStream(字節(jié)輸出流,字節(jié)流的抽象父類)

|--FileOutputStream(文件字節(jié)輸出流,就是以字節(jié)的形式將內(nèi)容寫入到文件中)

|--write(int b)一次寫出一個字節(jié)

|--write(byte[] b)將字節(jié)數(shù)組b里的內(nèi)容寫入到文件中

|--write(byte[] b, int off, int len)將字節(jié)數(shù)組b里的內(nèi)容,從索引為off的位置開始,總共寫len個

|--BufferedOutputStream(字節(jié)輸出緩沖流,其實就是一個包裝類,創(chuàng)建對象時要接收一個OutputStream,內(nèi)部封裝了一個1024*8的字節(jié)數(shù)組)

字符流

|--Reader(字符輸入流,字符流的抽象父類,抽象類不能直接創(chuàng)建對象,必須使用子類)

|--FileReader(文件字符輸入流,就是以字符的形式讀取文件中的內(nèi)容)

|--read()每次讀取一個字符,即可以按照字符大小讀取,返回值類型提升為int類型

|--read(char[] b)每次讀取多個字符,將內(nèi)容放入字符數(shù)組b中

|--BufferedReader(字符輸入緩沖流,其實就是一個包裝類,創(chuàng)建對象時要接收一個Reader,內(nèi)部封裝了一個1024*8的字符數(shù)組)

|--使用BufferedReader和BufferedWriter就不用再定義數(shù)組了

|--readLine()可以讀取一行字符(不包含換行符號)

|--LineNumberReader是BufferedReader的子類, 具有相同的功能, 并且可以統(tǒng)計行號

|--getLineNumber()方法可以獲取當(dāng)前行號

|--setLineNumber()方法可以設(shè)置當(dāng)前行號

|--Writer(字符輸出流,字符流的抽象父類)

|--FileWriter(文件字符輸出流,就是以字符的形式將內(nèi)容寫入到文件中)

|--write('a')/write("aaaa")可以寫入單個字符或者寫入字符串

|--write(char[] b, int off, int len)將字符數(shù)組b里的內(nèi)容,從所以為off的位置開始,總共寫len個

|--BufferedWriter(字符輸出緩沖流,其實就是一個包裝類,創(chuàng)建對象時要接收一個Writer,內(nèi)部封裝了一個1024*8的字符數(shù)組)

|--newLine()可以輸出一個跨平臺的換行符號"\r\n"

轉(zhuǎn)換流(使用指定的碼表讀寫字符)

|--InputStreamReader字節(jié)輸入流到字符輸入流的橋梁

|--OutputStreamWriter字符輸出流到字節(jié)輸出流的橋梁

其它流

|--SequenceInputStream序列流

|--序列流可以把多個字節(jié)輸入流整合成一個, 從序列流中讀取數(shù)據(jù)時, 將從被整合的第一個流開始讀, 讀完一個之后繼續(xù)讀第二個, 以此類推.

|--SequenceInputStream(InputStream in1,InputStream in2)

|--SequenceInputStream(Enumeration en)

|--ByteArrayOutputStream字節(jié)數(shù)組內(nèi)存輸出流

|--是將文件或鍵盤錄入的數(shù)據(jù)寫入到內(nèi)存中的字節(jié)數(shù)組

|--ByteArrayInputStream字節(jié)數(shù)組內(nèi)存輸入流

|--是以字節(jié)的方式讀取內(nèi)存中的字節(jié)數(shù)組數(shù)據(jù)

|--創(chuàng)建此對象要傳遞一個字節(jié)數(shù)組

|--RandomAccessFile隨機讀寫訪問流

|--該流同時具有讀和寫的功能

|--seek(long pos)設(shè)置讀取和寫入的位置

|--對象操作流

|--ObjectOutputStream將對象寫入到文件,要求對象所屬的類實現(xiàn)Serializable接口,該接口里面沒有內(nèi)容,只是一個標(biāo)記

|--writeObject()將對象寫入文件

|--ObjectInputStream將上面存入到文件中的對象讀取出來,因為存的時候所有對象是按照Object存入,所以取出來要進(jìn)行強制類型轉(zhuǎn)換

|--readObject()從文件讀取一個對象出來

|--數(shù)據(jù)輸入輸出流

|--DataInputStream數(shù)據(jù)輸入流,就是從文件讀取特定類型的數(shù)據(jù)

|--readInt()從文件中讀取一個int類型的數(shù)據(jù)

|--readLong()從文件讀取一個long類型的數(shù)據(jù)

|--DataOutputStream數(shù)據(jù)輸出流,向文件寫出特定類型的數(shù)據(jù)

|--writeInt()向文件寫入一個int類型的數(shù)據(jù)

|--writeLong()向文件寫入一個long類型的數(shù)據(jù)

|--打印流PrintStream

|--標(biāo)準(zhǔn)輸入輸出流

|--System.in是InputStream, 標(biāo)準(zhǔn)輸入流, 默認(rèn)可以從鍵盤輸入讀取字節(jié)數(shù)據(jù)

|--System.setIn(InputStream)修改輸入流

|--System.out是PrintStream, 標(biāo)準(zhǔn)輸出流, 默認(rèn)可以向Console中輸出字符和字節(jié)數(shù)據(jù)

|--System.setOut(PrintStream)修改輸出流

|--鍵盤錄入的兩種方式

|--Scanner sc = new Scanner(System.in);

|--BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

|--Properties是Hashtable的子類,是一個Map,存放的是鍵值對,一般用于項目的配置文件,配置文件中鍵和值的類型都為String類型

|--setProperty(String key,String value)向Properties中存入鍵值對

|--getProperty(String key)根據(jù)鍵獲取值

|--public Enumeration stringPropertyNames()以String的形式獲取所有的鍵,并封裝成Enumeration對象,之后進(jìn)行遍歷

|--load(InputStream inStream) 將字節(jié)輸入流inStream所關(guān)聯(lián)的文件中的值加載到Properties對象中

|--store(OutputStream out, String comments) 將Properties對象中的內(nèi)容寫入到out流所關(guān)聯(lián)的文件中,comments為說明信息

flush用來刷新緩沖區(qū)的,刷新后可以再次寫出,即flush后流仍然可以使用

close用來關(guān)閉流釋放資源的的,如果是帶緩沖區(qū)的流對象的close()方法,不但會關(guān)閉流,還會再關(guān)閉流之前刷新緩沖區(qū),關(guān)閉后不能再寫出,即不能再使用該流

IO流的標(biāo)準(zhǔn)異常處理

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容