filestream物件表示在磁碟或網路路徑上指向檔案的流。這個類提供了在檔案中讀寫位元組的方法,但經常使用streamreader或streamwriter執行這些功能。這是因為filestream類操作的是位元組和位元組陣列,而stream類操作的是字元資料。字元資料易於使用,但是有些操作,比如隨機檔案訪問(訪問檔案中間某點的資料),就必須由filestream物件執行。
一、建立filestream物件
1、filestream物件最簡單的建構函式僅僅帶有兩個引數,即檔名和filemode列舉值。
filestream afile = new filestream(filename, filemode);
2、另乙個常用的建構函式如下:
filestream afile = new filestream(filename, filemode, fileaccess);
三個引數的意義分別為:filename檔名,filemode列舉型別,表示如何開啟檔案的模式。fileaccess也是列舉型別,用於改變對使用者的訪問許可權。
filemode列舉成員:
使用每個值會發生什麼,取決於指定的檔名是否表示已有的檔案。注意建立流時該流指向檔案中的位置,除非特別說明,否則流就指向檔案的開頭。
在filestream建構函式不使用fileaccess列舉引數的版本中,使用預設值fileaccess. readwrite。
3、建立filestream物件,不必以filestream建構函式的引數形式提供前面所有的資訊。file和fileinfo類都提供了openread()和openwrite()方法,更易於建立filestream物件。前者開啟了唯讀訪問的檔案,後者只允許寫入檔案。
我們回顧一下:
open方法開啟檔案,返回檔案流filestream物件。
openread方法開啟現有檔案來讀取資料,返回唯讀流filestream物件。
openwrite方法開啟現在檔案以進行寫入,返回只寫不共享的filestream物件。
例如,下面的**行開啟了用於唯讀訪問的text.txt檔案:
filestream afile = file.openread("test.txt");
注意下面的**執行同樣的功能:
fileinfo afileinfo = new fileinfo("test.txt");
filestream afile = afile.openread();
二、讀取資料
使用filestream類讀取資料不像streamreader類讀取資料那樣容易。這是因為filestream類只能處理原始位元組(raw byte)。處理原始位元組的功能使filestream類可以用於任何資料檔案,而不僅僅是文字檔案。通過讀取位元組資料,filestream物件可以用於讀取影象和聲音的檔案。這種靈活性的代價是,不能使用filestream類將資料直接讀入字串,而使用streamreader類卻可以這樣處理。但是有幾種轉換類可以很容易地將位元組陣列轉換為字元陣列,或者進行相反的操作。
filestream.read()方法是從filestream物件所指向的檔案中訪問資料的主要手段。這個方法從檔案中讀取資料,再把資料寫入乙個位元組陣列。它有三個引數:第乙個引數是傳輸進來的位元組陣列,用以接受filestream物件中的資料。第二個引數是位元組陣列中開始寫入資料的位置。它通常是0,表示從陣列開端向檔案中寫入資料。最後乙個引數指定從檔案中讀出多少位元組。
下面我們看例項:
using system;
using system.text;
using system.io;
class program
fs.close();
}else
console.writeline("該檔案不存在");
}catch (exception ex)
console.readline();}}
從鍵盤接收檔案路徑,然後使用exits方法判斷檔案是否存在,如果存在,則使用filestream類的openread方法開啟並讀取,將讀到的資料存放在位元組陣列中,然後將位元組按預設編碼方式解碼成字串並輸出到控制台。流不使用時,一定要及時關閉。fs.close()關閉流。
C 類FileStream的使用
指定作業系統開啟檔案的方式 對於讀 寫或讀 寫訪問的檔案中定義的常數 包含用於控制的訪問其他型別的常數 system.io.filestream 物件可以具有相同的檔案 filestream派生於抽象類stream,stream抽象類實現了idisposable介面 常用構造方法 常用方法 屬性 u...
C 檔案流 FileStream類
filestream類 檔案流 類用於讀寫檔案中的資料,它既支援同步讀寫操作,也支援非同步讀寫操作。使用檔案流可以對檔案進行讀取 寫入 開啟和關閉操作,以及系統相關操作的標準輸入 標準輸出等。filestream類包括9個屬性,它們可以描述filestream類的例項的特性,如流的長度 以位元組為單...
使用FileStream讀寫資料
這節講一下使用filestream讀寫資料,這是乙個比較基礎的流。filestream類只能處理原始位元組,所以它可以處理任何型別的檔案。先看一下它的構造方法 filestream fs new filestream demo.txt filemode.open,fileaccess.read 這個...