基本檔案 I/O

抽象基底類別 Stream 支援位元組的讀取和寫入。Stream 整合非同步支援。它的預設實作 (Implementation) 依據對應的非同步方法來定義同步讀取和寫入,反之亦然。

代表資料流的所有類別都繼承自 Stream 類別。Stream 類別和它的衍生類別 (Derived Class) 提供資料來源和存放庫的一般觀點,可將程式設計人員與作業系統和基礎裝置的特有詳細資訊隔離。

資料流涉及這些基本作業:

  • 資料流可以被讀取。讀取即是從資料流到資料結構的資料傳送,例如位元組的陣列。

  • 資料流可以被寫入。寫入即是從資料來源到資料流的資料傳送。

  • 資料流支援搜尋。搜尋即是在資料流內查詢並修改目前位置。

依據基礎資料來源或存放庫,資料流可能只支援某些功能。例如,NetworkStreams 不支援搜尋。StreamCanReadCanWriteCanSeek 屬性以及它的衍生類別決定各種資料流所支援的作業。

如需一般 I/O 工作的清單,請參閱一般 I/O 工作

Note注意事項

Visual Basic 使用者可以選擇對檔案 I/O 使用 My.Computer.FileSystem 物件所提供的方法和屬性。如需詳細資訊,請參閱 My.Computer.FileSystem 物件

用於檔案 I/O 的類別

Directory 提供建立、移動和全面列舉目錄和子目錄的靜態方法。DirectoryInfo 類別提供執行個體方法。

DirectoryInfo 提供建立、移動和全面列舉目錄和子目錄的執行個體方法。Directory 類別提供靜態方法。

DriveInfo 提供了執行個體方法來存取與磁碟機有關的資訊。

File 提供建立、複製、刪除、移動和開啟檔案的靜態方法,並協助 FileStream 的建立。FileInfo 類別提供了執行個體方法。

FileInfo 提供建立、複製、刪除、移動和開啟檔案的執行個體方法,並協助 FileStream 的建立。File 類別提供靜態方法。

FileStream 透過它的 Seek 方法支援對檔案的隨機存取。FileStream 預設為同步開啟檔案,但也支援非同步作業。File 包含靜態方法,而 FileInfo 則包含執行個體方法。

FileSystemInfoFileInfoDirectoryInfo 的抽象基底類別。

Path 以跨平台方式提供處理目錄字串的方法和屬性。

DeflateStream 提供了方法和屬性,以透過 Deflate 演算法來壓縮和解壓縮資料流。

GZipStream 提供了方法和屬性來壓縮和解壓縮資料流。根據預設,這個類別會使用與 DeflateStream 類別相同的演算法,但是可加以擴充來使用其他壓縮格式。

SerialPort 提供了方法和屬性來控制序列埠檔案資源。

FileFileInfoDriveInfoPathDirectoryDirectoryInfo 為密封 (在 Microsoft Visual Basic 中為 NotInheritable) 類別。您可以建立這些類別的新執行個體,但它們不能有衍生類別。

用於讀取和寫入資料流的類別

BinaryReaderBinaryWriter 可對 Stream 讀取並寫入編碼字串和基本資料型別。

StreamReader 使用 Encoding 將字元轉換出入位元組,以從 Stream 讀取字元。StreamReader 具有建構函式 (Constructor),會根據 Encoding 特定 Preamble (例如位元組順序標記) 的出現,嘗試斷定指定 Stream 的正確 Encoding

StreamWriter 使用 Encoding 將字元轉換為位元組,以寫入字元至 Stream

StringReader 會從 String 讀取字元。StringReader 可讓您以相同 API 處理 Strings,所以您的輸出可以是任何編碼方式的 StreamString

StringWriter 會寫入字元至字串StringWriter 可讓您以相同 API 處理 Strings,所以您的輸出可以是任何編碼方式的 StreamString

TextReaderStreamReaderStringReader 的抽象基底類別。當針對位元組輸入和輸出設計抽象 Stream 類別的實作時,即需為 Unicode 字元輸出設計 TextReader 的實作。

TextWriterStreamWriterStringWriter 的抽象基底類別。當針對位元組輸入和輸出設計抽象 Stream 類別的實作時,即需為 Unicode 字元輸入設計 TextWriter 的實作。

通用 I/O 資料流類別

BufferedStream 為加入緩衝至另一個 StreamStream,例如 NetworkStream。(FileStream 內部已經有緩衝,而 MemoryStream 則不需要緩衝)。BufferedStream 物件可以針對某些資料流類型來撰寫,以改善讀取和寫入效能。緩衝區是記憶體中用以快取資料的位元組區塊,因此能減少呼叫作業系統的次數。

CryptoStream 連結資料流至密碼編譯轉換。雖然 CryptoStream 衍生自 Stream,但它不是 System.IO 命名空間的一部分,而是位於 System.Security.Cryptography 命名空間。

MemoryStream 為非緩衝資料流,其封裝資料可在記憶體中直接存取。這個資料流沒有支援存放區,若當做暫存緩衝區可能很有用。

NetworkStream 代表網路連接上面的 Stream。雖然 NetworkStream 衍生自 Stream,但它不是 System.IO 命名空間的一部分,而是位於 System.Net.Sockets 命名空間中。

I/O 和安全性

當在 System.IO 命名空間中使用類別時,必須滿足作業系統安全性需求,例如存取控制清單 (ACL),才能允許存取。這個需求是附加在任何 FileIOPermission 需求上的。

Note注意事項

ACL 可以程式設計方式來加以管理。如需詳細資訊,請參閱 HOW TO:新增或移除存取控制清單項目ACL 技術概觀

警告

網際網路和內部網路的預設安全性原則並不允許檔案的存取。因此,如果您正在撰寫將透過網際網路下載的程式碼的話,請不要使用一般的非隔離儲存區 I/O 類別。請使用隔離儲存區來代替。

警告

當檔案或網路資料流開啟時,安全性檢查只有在建構資料流時才會執行。因此,將這些資料流交給較不受信任程式碼或應用程式定義域時請務必小心。

請參閱

工作

HOW TO:建立目錄清單
HOW TO:讀取和寫入新建立的資料檔案
HOW TO:開啟並附加至記錄檔
HOW TO:從檔案讀取文字
HOW TO:將文字寫入檔案
HOW TO:從字串中讀取字元
HOW TO:將字元寫入至字串

概念

一般 I/O 工作