是最基本的流,可以操作所有檔案: 父類:inputstream和outputstream 這兩個是介面,需要生成子類物件使用一次讀取乙個位元組陣列位元組輸出流inputstream負責將檔案中內容讀出,讀出的方式一共可分成四種:
// 位元組輸出流一次讀出乙個位元組
inputstream is = new fileinputstream("mm.txt");
int len = 0;
while ((len = is.read()) != -1)
一次讀取乙個位元組陣列
//位元組輸出流一次讀取乙個位元組陣列
inputstream is = new fileinputstream("mm.txt");
int len = 0;
byte by = new
byte[1024];
while((len = is.read(by))!=-1)
自帶緩衝區的位元組輸出流 一次讀取乙個位元組
// 自帶緩衝區的位元組輸出流 一次讀取乙個位元組
// 採用預設緩衝區大小
bufferedinputstream bis = new bufferedinputstream(new fileinputstream("mm.txt"));
intlen =0;
while ((len = bis.read()) !=-1)
自帶緩衝區位元組輸出流 一次讀取乙個位元組陣列
// 自帶緩衝區的位元組輸出流 一次讀取乙個位元組
// 採用預設緩衝區大小
bufferedinputstream bis = new bufferedinputstream(new fileinputstream("mm.txt"));
int len = 0;
byte by = new
byte[1024];
while ((len = bis.read(by)) != -1)
位元組輸入流outputstream需要注意的細節負責向檔案中寫資料,與輸出流方法對應,也是包括四種方式,一次寫入乙個位元組,一次寫入乙個位元組陣列,自帶緩衝區的一次寫入乙個位元組,自帶緩衝的一次寫入乙個位元組陣列 ,**略。
檔案從輸出流 經過輸入流寫到另乙個檔案中時,原始檔和目的檔案一定要寫對
//檔案的格式一定要對應正確
//輸出流
//輸入流
fileoutputstream fos = new fileoutputstream("e:");
一次讀取乙個位元組時,若是顯示在控制台上,則中文會顯示亂碼,其原因是因為漢字是由多個位元組組成的,每讀取乙個位元組,就顯示在控制台,就好像是 把漢字拆開了,所以控制台識別不了,但是若是直接輸入到檔案中則不會發
生這種情況,因為位元組輸出流會自動將位元組組合。
自帶緩衝區的輸入輸出流 傳輸資料的速度更快,根據需要若傳輸資料較大 時,呼叫flush方法重新整理一下緩衝區
提問:什麼叫緩衝區?字元流是位元組流的在某方面的優化,可以這樣理解,一次傳輸乙個字元比一次傳輸乙個位元組速度快的多,所有資料都可以用位元組流操作,可以用字元流操作的都是可以用windows記事本開啟,且開啟後我們能看懂的(低俗的理解)。在很多地方都碰到緩衝區這個名詞,那麼到底什麼是緩衝區?又有什麼作用呢?
回答:緩衝區可以簡單地理解為一段記憶體區域。
可以簡單地把緩衝區理解為一段特殊的記憶體。
某些情況下,如果乙個程式頻繁地操作乙個資源(如檔案或資料庫),則效能會很低,此時為了提公升效能,就可以將一部分資料暫時讀入到記憶體的一塊區域之中,以後直接從此區域中讀取資料即可,因為讀取記憶體速度會比較快,這樣可以提公升程式的效能。
字元流的父類是writer和reader,型別是抽象類,需要生成子類物件使用
字元流的構造:位元組流+編碼表 = 字元流
//位元組轉換字元流,將位元組流和編碼表包裝成字元流
inputstreamreader isr = new inputstreamreader(new fileinputstream("mm.txt"));
outputstreamwriter osr = new outputstreamwriter(new fileoutputstream("mm.txt"));
也可以直接使用轉換流的子類,更加方便
filereader fr = new filereader("mm.txt");
filewriter fw = new filewriter("mm.txt");
自帶緩衝區的字元流 高階方法:一次讀取一行或一次寫入一行
一次寫入一行:
bufferedwriter bw
=new bufferedwriter(new filewriter("mm.txt"));
for (int i =
0; i <
10; i++)
bw.close();
一次讀取一行:
bufferedreader br = new bufferedreader(new filereader("mm.txt"));
string line = null;
while ((line = br.readline()) != null)
注意:使用readline()方法時:其中的輸入和輸出方法和位元組流操作相似,在這裡不再贅述。- 通過下列字元之一即可認為某行已終止:換行 (『\n』)、回車 (『\r』) 或回車後直接跟著換行。
- 包含該行內容的字串,不包含任何行終止符,如果已到達流末尾,則返回 null 。
需要注意的點:
向檔案中輸入資料時,若輸入資料較小,則呼叫close()方法,就可以將資料全部從輸出流中刷出,但如果寫入的資料較多,則在適當時候要呼叫flush()方法重新整理一下輸出流。
javaSE IO流的分類 選擇
inputstream 位元組輸入流抽象基類 fileinputstream bufferedinputstream 緩衝流 高效 ouputstream 位元組輸出流抽象基類 fileoutputstream bufferedouputstream 緩衝流 高效 writer 字元文字輸出流抽象基...
javaSE IO流(裝飾設計模式)
裝飾設計模式 當想要對已有的物件進行功能增強時,可以自定義類將已有的物件傳入,並提供加強功能,自定義的該類稱為裝飾類 典型的 reader filereader bufferedreader class decorator public class decoratordemo extends dec...
網路流學習總結
設 定義在二元組 上的實數函式且滿足 容量限制 對於每條邊,流經該邊的流量不得超過該邊的容量,即 f u,v le c u,v 斜對稱性 每條邊的流量與其相反邊的流量之和為 0,即 f u,v f v,u 流守恆性 從源點流出的流量等於匯點流入的流量 最大流我們有一張圖,要求從源點流向匯點的最大流量...