基本的文件 I/O

基本的文件 I/O

MSDN程序員

抽象基類 Stream 支持讀取和寫入字節。Stream 集成了異步支持。其默認實現根據其相應的異步方法來定義同步讀取和寫入,反之亦然。算法

全部表示流的類都是從 Stream 類繼承的。Stream 類及其派生類提供數據源和儲存庫的通常視圖,使程序員沒必要了解操做系統和基礎設備的具體細節。編程

流涉及三個基本操做:數組

  • 能夠從流讀取。讀取是從流到數據結構(如字節數組)的數據傳輸。緩存

  • 能夠向流寫入。寫入是從數據源到流的數據傳輸。安全

  • 流能夠支持查找。查找是對流內的當前位置進行的查詢和修改。網絡

根據基礎數據源或儲存庫,流可能只支持這些功能中的一部分。例如,NetworkStreams 不支持查找。Stream 的 CanReadCanWrite 和 CanSeek 屬性及其派生類決定不一樣的流所支持的操做。數據結構

有關通用 I/O 任務的列表,請參見通用 I/O 任務異步

Note注意

Visual Basic 用戶能夠選擇使用由 My.Computer.FileSystem 對象提供的方法和屬性進行文件 I/O。有關更多信息,請參見 My.Computer.FileSystem 對象socket

用於文件 I/O 的類

Directory 提供經過目錄和子目錄進行建立、移動和枚舉的靜態方法。DirectoryInfo 類提供實例方法。

DirectoryInfo 提供經過目錄和子目錄進行建立、移動和枚舉的實例方法。Directory 類提供靜態方法。

DriveInfo 提供訪問有關驅動器的信息的實例方法。

File 提供用於建立、複製、刪除、移動和打開文件的靜態方法,並協助建立 FileStreamFileInfo 類提供實例方法。

FileInfo 提供用於建立、複製、刪除、移動和打開文件的實例方法,並協助建立 FileStreamFile 類提供靜態方法。

FileStream 支持經過其 Seek 方法隨機訪問文件。默認狀況下,FileStream 以同步方式打開文件,但它也支持異步操做。File 包含靜態方法,而 FileInfo 包含實例方法。

FileSystemInfo 是 FileInfo 和 DirectoryInfo 的抽象基類。

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

DeflateStream 提供使用 Deflate 算法壓縮和解壓縮流的方法和屬性。

GZipStream 提供壓縮和解壓縮流的方法和屬性。默認狀況下,此類使用與 DeflateStream 類相同的算法,但能夠擴展到使用其餘壓縮格式。

SerialPort 提供控制串行端口文件資源的方法和屬性。

FileFileInfoDriveInfoPathDirectory 和 DirectoryInfo 是密封(在 Microsoft Visual Basic 中爲 NotInheritable)類。能夠建立這些類的新實例,但它們不能有派生類。

用於從流讀取和寫入流的類

BinaryReader 和 BinaryWriter 從 Streams 讀取或向 Streams 寫入編碼的字符串和基元數據類型。

StreamReader 經過使用 Encoding 進行字符和字節的轉換,從 Streams 中讀取字符。StreamReader 具備一個構造函數,該構造函數根據是否存在專用於 Encoding 的 preamble(例如一個字節順序標記)來嘗試肯定給定 Stream 的正確 Encoding 是什麼。

StreamWriter 經過使用 Encoding 將字符轉換爲字節,向 Streams 寫入字符。

StringReader 從 Strings 中讀取字符。StringReader 容許您用相同的 API 來處理 Strings,所以您的輸出能夠是 String 或以任何編碼表示的 Stream

StringWriter 向 Strings 寫入字符。StringWriter 容許您用相同的 API 來處理 Strings,所以您的輸出能夠是 String 或以任何編碼表示的 Stream

TextReader 是 StreamReader 和 StringReader 的抽象基類。抽象 Stream 類的實現用於字節輸入和輸出,而 TextReader 的實現用於 Unicode 字符輸出。

TextWriter 是 StreamWriter 和 StringWriter 的抽象基類。抽象 Stream 類的實現用於字節輸入和輸出,而 TextWriter 的實現用於 Unicode 字符輸出。

通用 I/O 流類

BufferedStream 是向另外一個 Stream(例如 NetworkStream)添加緩衝的 Stream。((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。有關更多信息,請參見如何:添加或移除訪問控制列表項和 ACL 技術概述

Caution note警告

Internet 和 Intranet 的默認安全策略不容許訪問文件。所以,若是您在編寫將經過 Internet 下載的代碼,則不要使用常規的非隔離存儲 I/O 類。請改用獨立存儲

Caution note警告

當文件或網絡流打開時,只有在構造流時才執行安全檢查。所以,在將這些流分發給受信度較低的代碼或應用程序域時,請格外當心。

請參見

相關文章
相關標籤/搜索