概念
提供字節序列的通用視圖。這是一個抽象類。
子類:
Microsoft.JScript.COMCharStream
System.Data.OracleClient.OracleBFile
System.Data.OracleClient.OracleLob
System.Data.SqlTypes.SqlFileStream
System.IO.BufferedStream
System.IO.FileStream
System.IO.MemoryStream
System.IO.UnmanagedMemoryStream
System.IO.Compression.BrotliStream
System.IO.Compression.DeflateStream
System.IO.Compression.GZipStream
System.IO.IsolatedStorage.IsolatedStorageFileStream
System.IO.Pipes.PipeStream
System.Net.Security.AuthenticatedStream
System.Net.Sockets.NetworkStream
System.Printing.PrintQueueStream
System.Security.Cryptography.CryptoStream
示例
下面的示例演示如何使用兩個FileStream對象將文件從一個目錄異步復制到另一個目錄。
FileStream 類是從 Stream 類派生的。 需要注意 Click 控件的 Button 事件處理程序具有 async
修飾符標記,因為它調用異步方法。
using System; using System.Threading.Tasks; using System.Windows; using System.IO; namespace WpfApplication { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private async void Button_Click(object sender, RoutedEventArgs e) { string StartDirectory = @"c:\Users\exampleuser\start"; string EndDirectory = @"c:\Users\exampleuser\end"; foreach (string filename in Directory.EnumerateFiles(StartDirectory)) { using (FileStream SourceStream = File.Open(filename, FileMode.Open)) { using (FileStream DestinationStream = File.Create(EndDirectory + filename.Substring(filename.LastIndexOf('\\')))) { await SourceStream.CopyToAsync(DestinationStream); } } } } } }
Stream所有流的抽象基類。
流是字節序列的抽象,例如文件、輸入/輸出設備、進程中通信管道或 TCP/IP 套接字。
Stream類及其派生類提供這些不同類型的輸入和輸出的一般視圖,並將程序員與操作系統和基礎設備的具體詳細信息隔離開來。
流涉及三個基本操作:
-
可以從流中讀取。 讀取是將數據從流傳輸到數據結構(如字節數組)中。
-
可以寫入流。 寫入是指將數據從數據結構傳輸到流中。
-
流可以支持查找。 查找是指查詢和修改流中的當前位置。 查找功能取決於流具有的后備存儲的類型。 例如,網絡流沒有當前位置的統一概念,因此通常不支持查找。
繼承自Stream的一些常用流是FileStream、和MemoryStream。
根據基礎數據源或存儲庫,流可能只支持其中一些功能。 您可以使用CanRead Stream類的、 CanWrite和CanSeek屬性查詢流的功能。
Read 和Write方法讀取和寫入各種格式的數據。 對於支持查找的流,請使用Seek和SetLength方法, Position並使用Length和屬性來查詢和修改流的當前位置和長度。
此類型實現 IDisposable 接口。 在使用完類型后,您應直接或間接釋放類型。 若要直接釋放類型,請在 try
/catch
塊中調用其 Dispose 方法。 若要間接釋放類型,請使用 using
(在 C# 中)或 Using
(在 Visual Basic 中)等語言構造。 有關詳細信息,請參閱 IDisposable 接口主題中的“使用實現 IDisposable 的對象”一節。