C 認識 理解和運用 BufferedStream

2021-06-04 02:55:23 字數 2801 閱讀 5653

bufferedstream類,可在另一流上新增並讀取乙個緩衝區,繼承stream抽象類。

緩衝區是記憶體中的位元組塊,用於快取資料,從而減少對作業系統的呼叫失敗次數(處理大檔案速度快)。

緩衝區可提高讀取和寫入效能,使用緩衝區可進行讀取或寫入操作,但不能同時進行這兩種操作。

//1.需要用bufferedstream,需要先建立乙個stream流物件。

//注:openwrite開啟準備寫入檔案 openreader(對應write方法) 開啟準備讀取檔案(對應reader方法)

//2.建立好流物件後,將這些物件作為引數傳遞給bufferedstream類的建構函式,建立bufferedstream例項

//3.建立了bufferedstream物件後,可以用該物件呼叫read()和write()方法,實現資料的讀寫

//write 方法:將位元組複製到緩衝流,並將緩衝流內的當前位置前進寫入的位元組數。

//read 方法:將位元組從當前緩衝流複製到陣列。

//seek 方法:設定當前緩衝流中的位置。

//4.最後一定要清空緩衝區,以確保資料全部寫入檔案。

完整**:

static

void

main(

string

args)

private

static

void

userbufferstreamread()

bfs.flush();

bfs.close();

instream.close();

}private

static

void

userbufferstreamwrite()

bfs.flush();

bfs.close();

instream.close();

}

類bufferedstream就是給另一流上的讀寫操作新增乙個緩衝區。緩衝區是記憶體中的位元組塊,用於快取資料,從而減少對作業系統的呼叫次數。因此,緩衝區可提高讀取和寫入效能。使用緩衝區可進行讀取或寫入,但不能同時進行這兩種操作。bufferedstream

的read

和write

方法自動維護緩衝區的讀寫過程。

bufferedstream可寫在某些型別的流周圍。它提供從基礎資料來源或儲存庫讀取位元組以及將位元組寫入基礎資料來源或儲存庫的實現。使用

binaryreader和

binarywriter

讀取和寫入其他資料型別。bufferedstream用於在不需要緩衝區時防止緩衝區降低輸入和輸出速度。如果您讀取和寫入的大小始終大於內部緩衝區的大小,那麼bufferedstream可能甚至無法分配內部緩衝區。

bufferedstream也在共享緩衝區中緩衝讀取和寫入。假設您幾乎始終執行一系列讀取或寫入操作,而很少在讀取和寫入之間切換。類bufferedstream的建構函式有2

種過載,如表3-17所示:

表3-17 類bufferedstream的常用建構函式

名稱

說明

bufferedstream (stream)

使用預設的緩衝區大小 4096 位元組初始化 bufferedstream 類的新例項。

bufferedstream (stream, int32)

使用指定的緩衝區大小初始化 bufferedstream 類的新例項。

本案例您將學習到:如何通過使用快取流的來讀寫檔案。

u實驗步驟(1):

由圖3-15所示,從工具箱之中拖拽乙個groupbox,text屬性設定為「開啟檔案」;拖拽二個label控制項到groupbox上,text屬性分別設定為「請選擇源檔名:」、「請填寫備份檔案名:」;拖拽二個textbox控制項到groupbox上,其中第一textbox控制項的enabled屬性為false;拖拽二個button

控制項到groupbox上,text屬性分別設定為「開啟檔案」、「備份檔案」。

圖3-15  通過緩衝區交換資料介面圖

u實驗步驟(2):

用滑鼠雙擊所有button控制項,進入.cs檔案編輯狀態準備進行開發。**加下:

usingsystem;

usingsystem.collections.generic;

usingsystem.componentmodel;

usingsystem.data;

usingsystem.drawing;

usingsystem.text;

usingsystem.windows.forms;

usingsystem.io;

///

/// 開啟原始檔案

///

private void button1_click(object sender, eventargs e)

}///

/// 備份目標檔案;stream 和 bufferedstream 的例項

///

private void button2_click(object sender, eventargs e)

//通過緩衝區進行讀寫

messagebox.show("給定備份的檔案已建立", "提示");

bufferedoutput.flush();

bufferedinput.close();

bufferedoutput.close();

//重新整理並關閉 bufferstream}}

}

理解和認識udev

因 為本身從事儲存行業,在工作中多次碰到使用者有這樣的要求 我的linux系統中原來有一塊scsi硬碟,系統分配的裝置檔案是 dev sda。現在新增 加了乙個外接的磁碟陣列,通過scsi卡連線。但接上這個磁碟陣列後,dev sda變成了磁碟陣列的硬碟了,原來內建的scsi硬碟變成了 dev sdb...

IIC認識和理解

有關於iic硬體部分,我這裡就不多做介紹了。首先我們要知道什麼是iic協議?簡單的說iic就一種主從架構的序列通訊匯流排協議,其實這句話如果你能理解到位的話,那麼對iic的理解也就差不多了。既然是一種通訊協議那麼必然有他的一些規則和特性在裡面,下面我們就先來談一談他們的特性和規則。首先是iic的特性...

認識和理解C 類(或C 類淺識)

類是物件導向程式設計的核心,它實際上是一種新的資料型別。類是對某一類物件的抽象,而物件是某一種類的例項。因此,類和物件是密切相關的。類的定義一般分為宣告部分和實現部分。宣告部分用來宣告該類中的成員,包含資料成員的宣告和成員函式的宣告。成員函式是用來對資料成員進行操作的,又稱為 方法 實現部分用來對成...