1.1. IO流概述(了解)1.1.1. IO概述(了解)
什么是IO,Input和Output,即輸入和輸出。
電腦相關(guān)的IO設備:和電腦通訊的設備,此刻要站在電腦的視點(diǎn),把信息傳遞給電腦叫輸入設備,把電腦信息傳遞出來(lái)的叫輸出設備。
輸入設備:麥克風(fēng)、掃描器、鍵盤(pán)、鼠標等
輸出設備:顯現器、打印機、投影儀、耳機、音響等
為什么程序需求IO呢?
事例1:打游戲操作,需求存儲游戲的信息。此刻需求把游戲中的數據存儲起來(lái),數據只能存儲在文件中。
事例2:打游戲操作,需求讀取之前游戲的記載信息,數據存儲在一個(gè)文件中的。此刻游戲程序需求去讀取文件中的數據,并顯現在游戲中。
IO操作是一個(gè)相對的進(jìn)程,一般的,咱們在程序視點(diǎn)來(lái)考慮(程序的內存)。
程序需求讀取數據:文件——>程序,輸入操作
程序需求保存數據:程序——>文件,輸出操作
1.1.2. IO操作示意圖(了解)
解說(shuō)IO知識點(diǎn)的時(shí)分,習氣和日子中的水流聯(lián)系起來(lái),一同來(lái)看看復古的水井和水缸。
此刻站在水缸的視點(diǎn),剖析IO的操作方向:
輸入操作:水井——>水缸
輸出操作:水缸——>飯鍋
留意:誰(shuí)具有數據,誰(shuí)就是源,把數據流到哪里,哪里就是方針。那么,請問(wèn)水缸是源仍是方針。1.1.3. 流的分類(lèi)(把握)
依據流的不同特性,流的區分是不一樣的,一般依照如下?tīng)顩r來(lái)考慮:
按活動(dòng)方向:分為輸入流和輸出流
按數據傳輸單位:分為字節省和字符流,即每次傳遞一個(gè)字節(byte)或一個(gè)字符(char)
按功用上區分:分為節點(diǎn)流和處理流,節點(diǎn)流功用單一,處理流功用更強
流的流向是相對的,咱們一般站在程序的視點(diǎn):
程序需求數據 → 把數據讀進(jìn)來(lái) →輸入操作(read):讀進(jìn)來(lái)
程序保存數據 → 把數據寫(xiě)出去 → 輸出操作(write):寫(xiě)出去
六字告誡:讀進(jìn)來(lái),寫(xiě)出去(細心揣摩這六個(gè)字有什么深邃的意義)1.1.4. 四大基流
操作IO流的模板:
1):創(chuàng )立源或許方針?lè )结?挖井).
輸入操作: 把文件中的數據流向到程序中,此刻文件是源,程序是方針.
輸出操作: 把程序中的數據流向到文件中,此刻文件是方針,程序是源.
2):創(chuàng )立IO流方針(水管).
輸入操作: 創(chuàng )立輸入流方針.
輸出操作: 創(chuàng )立輸出流方針.
3):詳細的IO操作.
輸入操作: 輸入流方針的read辦法.
輸出操作: 輸出流方針的write辦法.
4):封閉資源(勿忘). 一旦資源封閉之后,就不能運用流方針了,不然報錯.
輸入操作: 輸入流方針.close();
輸出操作: 輸出流方針.close();
留意:
四大籠統流是不能創(chuàng )立方針的,一般的咱們依據不同的需求創(chuàng )立他們不同的子類(lèi)方針,比方操作文件時(shí)就運用文件流。
不論是什么流,操作結束都必須調用close辦法,開(kāi)釋資源。1.1.4.1. InputStream(字節輸入流)
類(lèi)的聲明為:public abstract class InputStream extends Object implements Closeable,表明字節輸入流的一切類(lèi)的超類(lèi)。
常用辦法:
public void close() throws IOException:封閉此輸入流并開(kāi)釋與該流相關(guān)的一切系統資源。 InputStream 的 close 辦法不履行任何操作。
public abstract int read() throws IOException:從輸入流中讀取一個(gè)字節數據并回來(lái)該字節數據,假如抵達流的結尾,則回來(lái) -1。
public int read(byte[] buff) throws IOException:從輸入流中讀取多個(gè)字節數據,并存儲在緩沖區數組 buff 中?;貋?lái)已讀取的字節數量,假如已抵達流的結尾,則回來(lái) -1。1.1.4.2. OutputStream(字節輸出流)
類(lèi)的聲明為:public abstract class OutputStream extends Object implements Closeable, Flushable,表明字節輸出流的一切類(lèi)的超類(lèi)。
常用辦法:
public void close() throws IOException:封閉此輸出流并開(kāi)釋與此流有關(guān)的一切系統資源。
public abstract void write(int b) throws IOException:將指定的一個(gè)字節數據b寫(xiě)入到輸出流中。
public void write(byte[] buff) throws IOException:把數組buff中一切字節數據寫(xiě)入到輸出流中。
public void write(byte[] b, int off,int len) throws IOException:把數組buff中從索引off 開(kāi)端的len 個(gè)字節寫(xiě)入此輸出流中。1.1.4.3. Reader(字符輸入流)
類(lèi)的聲明為:public abstract class Reader extends Object implements Readable, Closeable,表明字符輸入流的一切類(lèi)的超類(lèi)。
常用辦法:
public abstract void close() throws IOException:封閉此輸入流并開(kāi)釋與該流相關(guān)的一切系統資源。
public int read() throws IOException:從輸入流中讀取一個(gè)字符數據并回來(lái)該字符數據,假如抵達流的結尾,則回來(lái) -1。
public int read(char[] cbuf) throws IOException:從輸入流中讀取多個(gè)字符,并存儲在緩沖區數組 cbuf 中?;貋?lái)已讀取的字符數,假如已抵達流的結尾,則回來(lái) -1。1.1.4.4. Writer(字符輸出流)
類(lèi)的聲明為:public abstract class Writer extends Object implements Appendable, Closeable, Flushable,表明字符輸出流的一切類(lèi)的超類(lèi)。
常用辦法:
public abstract void flush() throws IOException:改寫(xiě)此輸出流并強制寫(xiě)出一切緩沖的輸出字符。
public abstract void close() throws IOException:封閉此輸入流并開(kāi)釋與該流相關(guān)的一切系統資源。
public void write(int c) throws IOException:將指定的一個(gè)字符數據c寫(xiě)入到輸出流中。
public void write(char[] cbuf) throws IOException:把數組cbuf中cbuf.length 個(gè)字符數據寫(xiě)入到輸出流中。
public abstract void write(char[] cbuf, int off,int len) throws IOException:把數組cbuf中從索引off 開(kāi)端的len 個(gè)字符寫(xiě)入此輸出流中。
public void write(String str) throws IOException:將str字符串數據寫(xiě)入到輸出流中。
本系列教程為叩丁狼Java根底班內部教材,若要取得最好的學(xué)習效果,需求合作對應教育視頻一同學(xué)習。需求完好教育視頻,請私信作者。