java IO體系的學習總結

2021-08-20 05:54:48 字數 3392 閱讀 4772

輸出流:只能向其寫入資料,而不能向其讀取資料。

outputstream/writer: 所有輸出流的基類,前者是位元組輸出流,後者是字元輸出流。

操作的便捷:處理流可能提供了一系列便捷的方法來一次輸入和輸出大批量的內容,而不是輸入/輸出乙個或者多個「水滴」。

位元組輸入流

位元組輸出流

字元輸入流

字元輸出流

抽象基類

inputstream

outputstream

reader

writer

訪問檔案

fileinputstream

fileoutputstream

filereader

filewriter

訪問陣列

bytearrayinputstream

bytearrayoutputstream

chararrayreader

chararraywriter

訪問管道

pipedinputstream

pipedoutputstream

pipedreader

pipedwriter

訪問字串

stringreader

stringwriter

緩衝流bufferedinputstream

bufferedoutputstream

bufferedreader

bufferedwriter

轉換流inputstreamreader

outputstreamwriter

物件流objectinputstream

objectoutputstream

抽象基類

filterinputstream

filteroutputstream

filterreader

filterwriter

列印流printstream

printwriter

推回輸入流

pushbackinputstream

pushbackreader

特殊流datainputstream

dataoutputstream

int read(byte b)從輸入流中最多讀取b.length個位元組的資料,並將其儲存在位元組陣列b中,返回實際讀取的位元組數。

int read(byte b,int off,int len); 從輸入流中最多讀取len個位元組的資料,並將其儲存在陣列b中,放入陣列b中時,並不是從陣列起點開始,而是從off位置開始,返回實際讀取的位元組數。

int read(char b)從輸入流中最多讀取b.length個字元的資料,並將其儲存在位元組陣列b中,返回實際讀取的字元數。

int read(char b,int off,int len); 從輸入流中最多讀取len個字元的資料,並將其儲存在陣列b中,放入陣列b中時,並不是從陣列起點開始,而是從off位置開始,返回實際讀取的字元數。

對比inputstream和reader所提供的方法,就不難發現這兩個基類的功能基本是一樣的。inputstream和reader都是將輸入資料抽象成如圖15.5所示的水管,所以程式即可以通過read()方法每次讀取乙個」水滴「,也可以通過read(char chuf)或者read(byte b)方法來讀取多個「水滴」。當使用陣列作為read()方法中的引數, 我們可以理解為使用乙個「竹筒」到如圖15.5所示的水管中取水,如圖15.8所示read(char cbuf)方法的引數可以理解成乙個」竹筒「,程式每次呼叫輸入流read(char cbuf)或read(byte b)方法,就相當於用「竹筒」從輸入流中取出一筒「水滴」,程式得到「竹筒」裡面的」水滴「後,轉換成相應的資料即可;程式多次重複這個「取水」過程,直到最後。程式如何判斷取水取到了最後呢?直到read(char chuf)或者read(byte b)方法返回-1,即表明到了輸入流的結束點。

boolean marksupported(); 判斷此輸入流是否支援mark()操作,即是否支援記錄標記。

void reset(); 將此流的記錄指標重新定位到上一次記錄標記(mark)的位置。

long skip(long n); 記錄指標向前移動n個位元組/字元。

void write(byte/char buf); 將位元組陣列/字元陣列中的資料輸出到指定輸出流中。

void write(byte/char buf, int off,int len ); 將位元組陣列/字元陣列中從off位置開始,長度為len的位元組/字元輸出到輸出流中。

void write (string str, int off, int len); 將str字串裡面從off位置開始,長度為len的字元輸出到指定輸出流中。

public

class myclass

}catch (ioexception e)finally

}}

public

class filereadertest

}catch (ioexception e)finally }}

public

class fileoutputstreamtest

}catch (ioexception e)finally }}

public

class bufferedstreamtest

}catch (ioexception e)finally }}

public

class inputstreamreadertest

//列印讀取的內容

system.out.print("輸入內容:"+buffer);

}}catch (ioexception e)finally }}

public

static

void

writeobject() catch (filenotfoundexception e) catch (ioexception e)

}

/**

* 讀取物件

*/public

static

void

readobject() throws ioexception catch (filenotfoundexception e) catch (ioexception e) catch (classnotfoundexception e)

}

盡可能的多使用處理流,這會使我們的**更加靈活,復用性更好。

JAVA IO學習總結

file檔案物件,new file 位址 新建檔案物件,但要在使用這個檔案物件的時候才會真正建立檔案,例如在 new fileoutputstream file 的時候才會建立。fileoutputstream檔案輸出流物件,new fileoutputstream file 新建檔案輸出流物件,用...

Java IO學習筆記

1.宣告乙個檔案物件,separator代表 會因作業系統的不同而不同,比如linux下是 file f new file d file.separator test.txt 2.建立檔案 f.createnewfile 3.刪除檔案 f.delete 4.判斷檔案是否存在 f.exists 3.建...

javaIO學習筆記

1b.接收鍵盤的輸入 bufferedreader stdin new bufferedreader new inputstreamreader system.in system.out.println enter a line system.out.println stdin.readline 2...