輸出流:只能向其寫入資料,而不能向其讀取資料。
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...