更新時間:2020-03-02 10:44:48 來源:動力節(jié)點(diǎn) 瀏覽2578次
什么是IO,Input和Output,即輸入和輸出。
電腦相關(guān)的IO設(shè)備:和電腦通信的設(shè)備,此時要站在電腦的角度,把信息傳遞給電腦叫輸入設(shè)備,把電腦信息傳遞出來的叫輸出設(shè)備。
輸入設(shè)備:麥克風(fēng)、掃描器、鍵盤、鼠標(biāo)等
輸出設(shè)備:顯示器、打印機(jī)、投影儀、耳機(jī)、音響等
為什么程序需要IO呢?
案例1:打游戲操作,需要存儲游戲的信息。
此時需要把游戲中的數(shù)據(jù)存儲起來,數(shù)據(jù)只能存儲在文件中。
案例2:打游戲操作,需求讀取之前游戲的記錄信息,數(shù)據(jù)存儲在一個文件中的。
此時游戲程序需要去讀取文件中的數(shù)據(jù),并顯示在游戲中。
IO操作是一個相對的過程,一般的,我們在程序角度來思考(程序的內(nèi)存)。
程序需要讀取數(shù)據(jù):文件——>程序,輸入操作
程序需要保存數(shù)據(jù):程序——>文件,輸出操作

1.1.2.IO操作示意圖(了解)
講解IO知識點(diǎn)的時候,習(xí)慣和生活中的水流聯(lián)系起來,一起來看看復(fù)古的水井和水缸。

此時站在水缸的角度,分析IO的操作方向:
輸入操作:水井——>水缸
輸出操作:水缸——>飯鍋
注意:誰擁有數(shù)據(jù),誰就是源,把數(shù)據(jù)流到哪里,哪里就是目標(biāo)。那么,請問水缸是源還是目標(biāo)。
1.1.3.流的分類(掌握)
根據(jù)流的不同特性,流的劃分是不一樣的,一般按照如下情況來考慮:
按流動方向:分為輸入流和輸出流
按數(shù)據(jù)傳輸單位:分為字節(jié)流和字符流,即每次傳遞一個字節(jié)(byte)或一個字符(char)
按功能上劃分:分為節(jié)點(diǎn)流和處理流,節(jié)點(diǎn)流功能單一,處理流功能更強(qiáng)
流的流向是相對的,我們一般站在程序的角度:
程序需要數(shù)據(jù)→把數(shù)據(jù)讀進(jìn)來→輸入操作(read):讀進(jìn)來
程序保存數(shù)據(jù)→把數(shù)據(jù)寫出去→輸出操作(write):寫出去
六字箴言:讀進(jìn)來,寫出去(仔細(xì)揣摩這六個字有什么高深的含義)
1.1.4.四大基流

操作IO流的模板:
1):創(chuàng)建源或者目標(biāo)對象(挖井).
輸入操作:把文件中的數(shù)據(jù)流向到程序中,此時文件是源,程序是目標(biāo).
輸出操作:把程序中的數(shù)據(jù)流向到文件中,此時文件是目標(biāo),程序是源.
2):創(chuàng)建IO流對象(水管).
輸入操作:創(chuàng)建輸入流對象.
輸出操作:創(chuàng)建輸出流對象.
3):具體的IO操作.
輸入操作:輸入流對象的read方法.
輸出操作:輸出流對象的write方法.
4):關(guān)閉資源(勿忘).一旦資源關(guān)閉之后,就不能使用流對象了,否則報錯.
輸入操作:輸入流對象.close();
輸出操作:輸出流對象.close();
注意:
四大抽象流是不能創(chuàng)建對象的,一般的我們根據(jù)不同的需求創(chuàng)建他們不同的子類對象,比如操作文件時就使用文件流。
不管是什么流,操作完畢都必須調(diào)用close方法,釋放資源。
1.1.4.1.InputStream(字節(jié)輸入流)
類的聲明為:publicabstractclassInputStreamextendsObjectimplementsCloseable,表示字節(jié)輸入流的所有類的超類。
常用方法:
publicvoidclose()throwsIOException:關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。InputStream的close方法不執(zhí)行任何操作。
publicabstractintread()throwsIOException:從輸入流中讀取一個字節(jié)數(shù)據(jù)并返回該字節(jié)數(shù)據(jù),如果到達(dá)流的末尾,則返回-1。
publicintread(byte[]buff)throwsIOException:從輸入流中讀取多個字節(jié)數(shù)據(jù),并存儲在緩沖區(qū)數(shù)組buff中。返回已讀取的字節(jié)數(shù)量,如果已到達(dá)流的末尾,則返回-1。
1.1.4.2.OutputStream(字節(jié)輸出流)
類的聲明為:publicabstractclassOutputStreamextendsObjectimplementsCloseable,Flushable,表示字節(jié)輸出流的所有類的超類。
常用方法:
publicvoidclose()throwsIOException:關(guān)閉此輸出流并釋放與此流有關(guān)的所有系統(tǒng)資源。
publicabstractvoidwrite(intb)throwsIOException:將指定的一個字節(jié)數(shù)據(jù)b寫入到輸出流中。
publicvoidwrite(byte[]buff)throwsIOException:把數(shù)組buff中所有字節(jié)數(shù)據(jù)寫入到輸出流中。
publicvoidwrite(byte[]b,intoff,intlen)throwsIOException:把數(shù)組buff中從索引off開始的len個字節(jié)寫入此輸出流中。
1.1.4.3.Reader(字符輸入流)
類的聲明為:publicabstractclassReaderextendsObjectimplementsReadable,Closeable,表示字符輸入流的所有類的超類。
常用方法:
publicabstractvoidclose()throwsIOException:關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。
publicintread()throwsIOException:從輸入流中讀取一個字符數(shù)據(jù)并返回該字符數(shù)據(jù),如果到達(dá)流的末尾,則返回-1。
publicintread(char[]cbuf)throwsIOException:從輸入流中讀取多個字符,并存儲在緩沖區(qū)數(shù)組cbuf中。返回已讀取的字符數(shù),如果已到達(dá)流的末尾,則返回-1。
1.1.4.4.Writer(字符輸出流)
類的聲明為:publicabstractclassWriterextendsObjectimplementsAppendable,Closeable,Flushable,表示字符輸出流的所有類的超類。
常用方法:
publicabstractvoidflush()throwsIOException:刷新此輸出流并強(qiáng)制寫出所有緩沖的輸出字符。
publicabstractvoidclose()throwsIOException:關(guān)閉此輸入流并釋放與該流關(guān)聯(lián)的所有系統(tǒng)資源。
publicvoidwrite(intc)throwsIOException:將指定的一個字符數(shù)據(jù)c寫入到輸出流中。
publicvoidwrite(char[]cbuf)throwsIOException:把數(shù)組cbuf中cbuf.length個字符數(shù)據(jù)寫入到輸出流中。
publicabstractvoidwrite(char[]cbuf,intoff,intlen)throwsIOException:把數(shù)組cbuf中從索引off開始的len個字符寫入此輸出流中。
publicvoidwrite(Stringstr)throwsIOException:將str字符串?dāng)?shù)據(jù)寫入到輸出流中。

以上就是動力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Javase經(jīng)典基礎(chǔ)入門教程:IO流概述”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743