更新時間:2020-03-02 10:44:48 來源:動力節點 瀏覽2186次
什么是IO,Input和Output,即輸入和輸出。
電腦相關的IO設備:和電腦通信的設備,此時要站在電腦的角度,把信息傳遞給電腦叫輸入設備,把電腦信息傳遞出來的叫輸出設備。
輸入設備:麥克風、掃描器、鍵盤、鼠標等
輸出設備:顯示器、打印機、投影儀、耳機、音響等
為什么程序需要IO呢?
案例1:打游戲操作,需要存儲游戲的信息。
此時需要把游戲中的數據存儲起來,數據只能存儲在文件中。
案例2:打游戲操作,需求讀取之前游戲的記錄信息,數據存儲在一個文件中的。
此時游戲程序需要去讀取文件中的數據,并顯示在游戲中。
IO操作是一個相對的過程,一般的,我們在程序角度來思考(程序的內存)。
程序需要讀取數據:文件——>程序,輸入操作
程序需要保存數據:程序——>文件,輸出操作
1.1.2.IO操作示意圖(了解)
講解IO知識點的時候,習慣和生活中的水流聯系起來,一起來看看復古的水井和水缸。
此時站在水缸的角度,分析IO的操作方向:
輸入操作:水井——>水缸
輸出操作:水缸——>飯鍋
注意:誰擁有數據,誰就是源,把數據流到哪里,哪里就是目標。那么,請問水缸是源還是目標。
1.1.3.流的分類(掌握)
根據流的不同特性,流的劃分是不一樣的,一般按照如下情況來考慮:
按流動方向:分為輸入流和輸出流
按數據傳輸單位:分為字節流和字符流,即每次傳遞一個字節(byte)或一個字符(char)
按功能上劃分:分為節點流和處理流,節點流功能單一,處理流功能更強
流的流向是相對的,我們一般站在程序的角度:
程序需要數據→把數據讀進來→輸入操作(read):讀進來
程序保存數據→把數據寫出去→輸出操作(write):寫出去
六字箴言:讀進來,寫出去(仔細揣摩這六個字有什么高深的含義)
1.1.4.四大基流
操作IO流的模板:
1):創建源或者目標對象(挖井).
輸入操作:把文件中的數據流向到程序中,此時文件是源,程序是目標.
輸出操作:把程序中的數據流向到文件中,此時文件是目標,程序是源.
2):創建IO流對象(水管).
輸入操作:創建輸入流對象.
輸出操作:創建輸出流對象.
3):具體的IO操作.
輸入操作:輸入流對象的read方法.
輸出操作:輸出流對象的write方法.
4):關閉資源(勿忘).一旦資源關閉之后,就不能使用流對象了,否則報錯.
輸入操作:輸入流對象.close();
輸出操作:輸出流對象.close();
注意:
四大抽象流是不能創建對象的,一般的我們根據不同的需求創建他們不同的子類對象,比如操作文件時就使用文件流。
不管是什么流,操作完畢都必須調用close方法,釋放資源。
1.1.4.1.InputStream(字節輸入流)
類的聲明為:publicabstractclassInputStreamextendsObjectimplementsCloseable,表示字節輸入流的所有類的超類。
常用方法:
publicvoidclose()throwsIOException:關閉此輸入流并釋放與該流關聯的所有系統資源。InputStream的close方法不執行任何操作。
publicabstractintread()throwsIOException:從輸入流中讀取一個字節數據并返回該字節數據,如果到達流的末尾,則返回-1。
publicintread(byte[]buff)throwsIOException:從輸入流中讀取多個字節數據,并存儲在緩沖區數組buff中。返回已讀取的字節數量,如果已到達流的末尾,則返回-1。
1.1.4.2.OutputStream(字節輸出流)
類的聲明為:publicabstractclassOutputStreamextendsObjectimplementsCloseable,Flushable,表示字節輸出流的所有類的超類。
常用方法:
publicvoidclose()throwsIOException:關閉此輸出流并釋放與此流有關的所有系統資源。
publicabstractvoidwrite(intb)throwsIOException:將指定的一個字節數據b寫入到輸出流中。
publicvoidwrite(byte[]buff)throwsIOException:把數組buff中所有字節數據寫入到輸出流中。
publicvoidwrite(byte[]b,intoff,intlen)throwsIOException:把數組buff中從索引off開始的len個字節寫入此輸出流中。
1.1.4.3.Reader(字符輸入流)
類的聲明為:publicabstractclassReaderextendsObjectimplementsReadable,Closeable,表示字符輸入流的所有類的超類。
常用方法:
publicabstractvoidclose()throwsIOException:關閉此輸入流并釋放與該流關聯的所有系統資源。
publicintread()throwsIOException:從輸入流中讀取一個字符數據并返回該字符數據,如果到達流的末尾,則返回-1。
publicintread(char[]cbuf)throwsIOException:從輸入流中讀取多個字符,并存儲在緩沖區數組cbuf中。返回已讀取的字符數,如果已到達流的末尾,則返回-1。
1.1.4.4.Writer(字符輸出流)
類的聲明為:publicabstractclassWriterextendsObjectimplementsAppendable,Closeable,Flushable,表示字符輸出流的所有類的超類。
常用方法:
publicabstractvoidflush()throwsIOException:刷新此輸出流并強制寫出所有緩沖的輸出字符。
publicabstractvoidclose()throwsIOException:關閉此輸入流并釋放與該流關聯的所有系統資源。
publicvoidwrite(intc)throwsIOException:將指定的一個字符數據c寫入到輸出流中。
publicvoidwrite(char[]cbuf)throwsIOException:把數組cbuf中cbuf.length個字符數據寫入到輸出流中。
publicabstractvoidwrite(char[]cbuf,intoff,intlen)throwsIOException:把數組cbuf中從索引off開始的len個字符寫入此輸出流中。
publicvoidwrite(Stringstr)throwsIOException:將str字符串數據寫入到輸出流中。
以上就是動力節點Java培訓機構小編介紹的“Javase經典基礎入門教程:IO流概述”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習