理解io流產生和整體流程

2021-08-02 10:41:49 字數 2077 閱讀 6111

可以從檔案或者路徑下讀取

// 建立位元組輸出流物件

方式一 已知檔案下

fileoutputstream(file

file)

file

file = new

file("fos.txt");

fileoutputstream fos = new fileoutputstream(file);

方式二 已知路勁下

fileoutputstream(string name)

```# 轉換流出現時機

為了讀取字元 我們提供了轉換流

inputstreamreader(inputstream is):用預設的編碼讀取資料

inputstreamreader(inputstream is,string charsetname):我們只定的編碼讀取資料

為什麼說是轉換流 我們可以看 構造引數(傳入引數 是位元組流 及:

inputstreamreader isr = new inputstreamreader(new fileinputstream(「oow.txt」), 「utf-8」);

同理:

outputstreamwriter(outputstream out):根據預設編碼把位元組流的資料轉換為字元流

outputstreamwriter(outputstream out,stringcharsetname):根據指定編碼把位元組流資料轉換為字元流把位元組流轉換為字元流。

字元流 = 位元組流 +編碼表

注意 一定要呼叫flush()

# 字元流出現時機
後來我們為了更加方便處理字元資料省略轉換繁瑣過程

出現:

filereader fr = new filereader(「c:\a.txt」);

filewriter fw = new filewriter(「d:\b.txt」);

直接讀取字元 和寫入字元

兩者區別

inputstreamreader isr = new inputstreamreader(new fileinputstream(「oow.txt」), 「utf-8」);

這句話可以看出來轉換流目的是可以指定字符集然而filereader只能使用預設字元

# 高階流出現過程
這個時候我們又覺得這樣乙個字元字元讀取速度還是有點慢 然而出現了高階流 字元緩衝流

bufferedreader

從字元輸入流中讀取文字,緩衝各個字元,從而實現字元、陣列和行的高效讀取。

可以指定緩衝區的大小,或者可使用預設的大小。大多數情況下,預設值就足夠大了。

bufferedwriter:

public void newline():根據系統來決定換行符

bufferedreader:

public string readline():一次讀取一行資料

包含該行內容的字串,不包含任何行終止符,如果已到達流末尾,則返回 null

public class buffereddemo

private static void read() throws ioexception 

//釋放資源

br.close();

}private static void write() throws ioexception

bw.close();

}

public static void main(string args) throws ioexception

br.close();

// 隨機產生乙個索引

random r = new random();

int index = r.nextint(array.size());

// 根據該索引獲取乙個值

string name = array.get(index);

system.out.println("該幸運者是:" + name);

}```

同步IO和非同步IO 簡單理解

在linux系統中,所有的裝置讀寫都可以看做是檔案的讀寫來進行操作,而對檔案的讀寫一般要經過核心態和使用者態的切換,因此io產生了同步和非同步。同步是阻塞模式,非同步是非阻塞模式。同步就是指乙個程序在執行某個請求的時內候,若該請求需容要一段時間才能返回資訊,那麼這個程序將會一直等待下去,直到收到返回...

大型資料倉儲 整體架構的設計和理解

1.基於haoop實現的資料倉儲需要用到的元件 資料採集層 flume,kafka,sqoop,logstash,datax 資料儲存層 msyql,hdfs,hbase,redis,mongodb 資料計算 mr,tez,spark,flink,storm 2.系統資料流程設計 業務資料 mysq...

如何理解PHP同步阻塞 和非同步IO?

至於為什麼要寫這篇文章,是因為在近日有個小夥伴突然問我,什麼是同步?什麼是非同步?概念是什麼?如何理解?我也相信還是有部分小夥伴在初級開發階段確實沒有太過於關注這個概念?這就說下我的理解!先科普下io io 是input和output的縮寫,這個詞在很多地方都會出現,是什麼不用多解釋,通常被稱為 輸...