(a)fileoutputstream(file name) 建立乙個檔案輸出流,向指定的 file 物件輸出資料。
(b)fileoutputstream(filedescriptor) 建立乙個檔案輸出流,向指定的檔案描述器輸出資料。
(c)fileoutputstream(string name) 建立乙個檔案輸出流,向指定名稱的檔案輸出資料。
(d)fileoutputstream(string, boolean) 用指定系統的檔名,建立乙個輸出檔案。
inputstreamreader 和 outputstreamreader :
把乙個以位元組為導向的 stream 轉換成乙個以字元為導向的 stream 。
inputstreamreader 類是從位元組流到字元流的橋梁:它讀入位元組,並根據指定的編碼方式,將之轉換為字元流。
使用的編碼方式可能由名稱指定,或平台可接受的預設編碼方式。
inputstreamreader 的 read() 方法之一的每次呼叫,可能促使從基本位元組輸入流中讀取乙個或多個位元組。
為了達到更高效率,考慮用 bufferedreader 封裝 inputstreamreader ,
bufferedreader in = new bufferedreader(new inputstreamreader(system.in));
inputstream,outputstream,reader,writer都是抽象類。所以不能直接new
位元組流和字元流使用是非常相似的,那麼除了操作**的不同之外,還有哪些不同呢?
1、位元組流在操作的時候本身是不會用到緩衝區(記憶體)的,是與檔案本身直接操作的,而字元流在操作的時候是使用到緩衝區的
2、位元組流在操作檔案時,即使不關閉資源(close方法),檔案也能輸出,但是如果字元流不使用close方法的話,則不會輸出任何內容,說明字元流用的是緩衝區,並且可以使用flush方法強制進行重新整理緩衝區,這時才能在不close的情況下輸出內容
3、reader類的read()方法返回型別為int :作為整數讀取的字元(佔兩個位元組共16位),範圍在 0 到 65535 之間 (0x00-0xffff),如果已到達流的末尾,則返回 -1
inputstream的read()雖然也返回int,但由於此類是面向位元組流的,乙個位元組佔8個位,所以返回 0 到 255 範圍內的 int 位元組值。如果因為已經到達流末尾而沒有可用的位元組,則返回值 -1。因此對於不能用0-255來表示的值就得用字元流來讀取!比如說漢字.
4、位元組流與字元流主要的區別是他們的的處理方式
位元組流:處理位元組和位元組陣列或二進位制物件;
字元流:處理字元、字元陣列或字串。
一、字元(reader和 writer):中文,字元是只有在記憶體中才會形成的,操作字元、字元陣列或字串,
file infile = new file("c:\\a.txt");
file outfile = new file("c:\\b.txt");
fileinputstream inputstream = new fileinputstream(infile);
fileoutputstream outputstream = new fileoutputstream(outfile);
//邊讀邊寫
byte content = new byte[1024];
int len;
while ((len = inputstream.read(content)) != -1)
outputstream.flush();
outputstream.close();
inputstream.close();
//一次性讀寫
file outfile2 = new file("c:\\c.txt");
fileinputstream inputstream2 = new fileinputstream(infile);
fileoutputstream outputstream2 = new fileoutputstream(outfile2);
byte b=new byte[(int)infile.length()];
inputstream2.read(b);
outputstream2.write(b);
outputstream2.flush();
outputstream2.close();
inputstream2.close();
緩衝區可以簡單地理解為一段記憶體區域。
可以簡單地把緩衝區理解為一段特殊的記憶體。
某些情況下,如果乙個程式頻繁地操作乙個資源(如檔案或資料庫),則效能會很低,此時為了提公升效能,就可以將一部分資料暫時讀入到記憶體的一塊區域之中,以後直接從此區域中讀取資料即可,因為讀取記憶體速度會比較快,這樣可以提公升程式的效能。
在字元流的操作中,所有的字元都是在記憶體中形成的,在輸出前會將所有的內容暫時儲存在記憶體之中,所以使用了緩衝區暫存資料。
如果想在不關閉時也可以將字元流的內容全部輸出,則可以使用writer類中的flush()方法完成。
位元組流與字元流的區別
位元組流與字元流的區別 位元組流與和字元流的使用非常相似,兩者除了操作 上的不同之外,是否還有其他的不同呢?實際上位元組流在操作時本身不會用到緩衝區 記憶體 是檔案本身直接操作的,而字元流在操作時使用了緩衝區,通過緩衝區再操作檔案,如圖 下面以兩個寫檔案的操作為主進行比較,但是在操作時位元組流和字元...
位元組流與字元流的區別
要把一片二進位制資料資料逐一輸出到某個裝置中,或者從某個裝置中逐一讀取一片二進位制資料,不管輸入輸出裝置是什麼,我們要用統一的方式來完成這些操作,用一種抽象的方式進行描述,這個抽象描述方式起名為io流,對應的抽象類為outputstream和inputstream 不同的實現類就代表不同的輸入和輸出...
位元組流與字元流的區別
1.字元流操作的時候會使用緩衝區,而位元組流操作的時候不會使用緩衝區 2.在輸出的時候,outputstream即使不關閉也能將內容輸出,writer則不行,不關閉的話,最後一條內容不能輸出,因為所有內容都儲存在緩衝區,每當呼叫了close 方法即意味著清空了緩衝區,即可證明字元流確實使用了緩衝區的...