.NET幫助 FileStream C# (如何為開發人員運作) Jacob Mellor 更新:2025年7月28日 下載 IronPDF NuGet 下載 DLL 下載 Windows Installer 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 本文將重點介紹C#中的FileStream類別及其如何協助您讀寫檔案操作。 我們將探索實際範例,了解FileStream的核心運作方式,以及如何有效地管理檔案資料。 本指南面向那些對C#檔案處理不熟悉的人,因此語言將保持初學者友好,同時提供詳細的C#檔案操作指示以及IronPDF程式庫的簡介。 什麼是FileStream? C#中的FileStream類別提供了一種以位元組方式處理檔案的方法。 它用於讀取和寫入檔案,允許您直接與檔案內容互動。 這對於處理輸入/輸出任務中特別有用,尤其是在處理位元組陣列時。 FileStream的使用案例 FileStream特別適合於: 直接從或寫入檔案的讀取和寫入二進位資料。 有效地處理大型檔案。 執行非同步檔案操作。 通過有效使用記憶體來管理系統資源。 基本範例 這裡有一個簡單的範例,說明如何打開檔案、寫入資料,然後使用FileStream讀取它: using System; using System.IO; public class Example { public static void Main() { string path = "example.txt"; // Creating a FileStream object to handle the file. The file handle is acquired here. using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write)) { byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!"); // Write data to file fileStream.Write(data, 0, data.Length); } // Read from the file using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[1024]; int bytesRead = fileStream.Read(buffer, 0, buffer.Length); string text = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine(text); } } } using System; using System.IO; public class Example { public static void Main() { string path = "example.txt"; // Creating a FileStream object to handle the file. The file handle is acquired here. using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write)) { byte[] data = System.Text.Encoding.UTF8.GetBytes("Hello, FileStream!"); // Write data to file fileStream.Write(data, 0, data.Length); } // Read from the file using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[1024]; int bytesRead = fileStream.Read(buffer, 0, buffer.Length); string text = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine(text); } } } $vbLabelText $csharpLabel 此範例展示了如何創建一個FileStream物件來處理檔案讀取和寫入操作。 FileStream類直接讀寫位元組,非常適合處理大型檔案或二進位資料。 我們使用Encoding在文字和位元組之間進行轉換。 使用FileStream寫入資料 要將資料寫入檔案,您將使用Write方法。 這裡有一個更詳細解釋其工作原理的範例: using System; using System.IO; public class FileWriteExample { public static void Main() { string path = "output.txt"; // Creating a FileStream object to write data to the file using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write)) { byte[] buffer = System.Text.Encoding.UTF8.GetBytes("Writing data to FileStream."); int offset = 0; int count = buffer.Length; // Writing data to the file fileStream.Write(buffer, offset, count); } } } using System; using System.IO; public class FileWriteExample { public static void Main() { string path = "output.txt"; // Creating a FileStream object to write data to the file using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write)) { byte[] buffer = System.Text.Encoding.UTF8.GetBytes("Writing data to FileStream."); int offset = 0; int count = buffer.Length; // Writing data to the file fileStream.Write(buffer, offset, count); } } } $vbLabelText $csharpLabel 在此代碼中,我們使用UTF8編碼將字串轉換為位元組陣列。 Write方法從當前位置(由offset決定)開始將位元組陣列寫入檔案,並寫入指定數量的位元組。 FileMode.Create創建新檔案,覆蓋任何具有相同名稱的現有檔案。 FileAccess.Write授予FileStream寫入權限。 使用FileStream讀取資料 現在,讓我們探索如何使用FileStream從檔案中讀取資料。 using System; using System.IO; public class FileReadExample { public static void Main() { // File path string path = "output.txt"; // File Stream Object using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[1024]; int bytesRead = fileStream.Read(buffer, 0, buffer.Length); // Output Stream string output = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine(output); } } } using System; using System.IO; public class FileReadExample { public static void Main() { // File path string path = "output.txt"; // File Stream Object using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[1024]; int bytesRead = fileStream.Read(buffer, 0, buffer.Length); // Output Stream string output = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine(output); } } } $vbLabelText $csharpLabel 在此範例中: FileMode.Open打開一個現有檔案。 Read方法根據緩衝區大小讀取指定數量的位元組並將其存儲在位元組陣列緩衝區中。 我們使用Encoding.UTF8.GetString將位元組資料轉換回字串。 使用FileStream管理檔案訪問 FileStream類控制檔案的訪問權限,允許細緻地管理檔案操作和系統資源。 使用FileStream時,確保在使用後正確處理流非常重要,可以手動調用using語句。 處理檔案位置 每次您讀取或寫入檔案時,FileStream會跟蹤檔案中的當前位置。您可以使用Position屬性訪問此位置: fileStream.Position = 0; // Move to the beginning of the file fileStream.Position = 0; // Move to the beginning of the file $vbLabelText $csharpLabel 使用FileStream進行非同步操作 FileStream可以用於非同步的讀寫操作,通過允許其他程序在檔案操作進行時運行以提高性能。 這是非同步讀取的基本範例: using System; using System.IO; using System.Threading.Tasks; public class AsyncReadExample { public static async Task Main() { // Specified Path string path = "output.txt"; using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None, 4096, true)) { byte[] buffer = new byte[1024]; int bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length); string result = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine(result); } } } using System; using System.IO; using System.Threading.Tasks; public class AsyncReadExample { public static async Task Main() { // Specified Path string path = "output.txt"; using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None, 4096, true)) { byte[] buffer = new byte[1024]; int bytesRead = await fileStream.ReadAsync(buffer, 0, buffer.Length); string result = System.Text.Encoding.UTF8.GetString(buffer, 0, bytesRead); Console.WriteLine(result); } } } $vbLabelText $csharpLabel ReadAsync方法以非同步方式讀取資料。 FileMode.Open參數控制檔案的訪問方式。 處理異常的範例 當使用FileStream時,處理異常至關重要,以避免運行時錯誤並正確管理系統資源。 這是處理讀取或寫入檔案時異常的模式: using System; using System.IO; public class ExceptionHandlingExample { public static void Main() { string path = "nonexistentfile.txt"; try { using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[1024]; int bytesRead = fileStream.Read(buffer, 0, buffer.Length); Console.WriteLine("Bytes Read: " + bytesRead); } } catch (FileNotFoundException e) { Console.WriteLine($"Exception: {e.Message}"); } } } using System; using System.IO; public class ExceptionHandlingExample { public static void Main() { string path = "nonexistentfile.txt"; try { using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read)) { byte[] buffer = new byte[1024]; int bytesRead = fileStream.Read(buffer, 0, buffer.Length); Console.WriteLine("Bytes Read: " + bytesRead); } } catch (FileNotFoundException e) { Console.WriteLine($"Exception: {e.Message}"); } } } $vbLabelText $csharpLabel 緩衝和性能 FileStream類包含一個緩衝機制,允許更快的性能,尤其是在處理大型檔案時。 使用緩衝區,資料暫時存儲在記憶體中,減少對磁碟的頻繁訪問需求。 using System; using System.IO; public class BufferingExample { public static void Main() { string path = "bufferedfile.txt"; byte[] data = System.Text.Encoding.UTF8.GetBytes("Buffered FileStream example."); using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough)) { fileStream.Write(data, 0, data.Length); } } } using System; using System.IO; public class BufferingExample { public static void Main() { string path = "bufferedfile.txt"; byte[] data = System.Text.Encoding.UTF8.GetBytes("Buffered FileStream example."); using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 4096, FileOptions.WriteThrough)) { fileStream.Write(data, 0, data.Length); } } } $vbLabelText $csharpLabel 這裡,FileOptions.WriteThrough確保資料直接寫入檔案,繞過額外的緩衝。 然而,您可以控制緩衝區大小以進行性能調整。 介紹IronPDF IronPDF是一個強大的C# PDF程式庫,用於在.NET應用程式中創建、編輯和操作PDF文件。 開發者可以使用IronPDF從多種輸入生成PDF,例如HTML、圖像甚至原始文本。 具備如浮水印、合併、拆分和密碼保護等功能,IronPDF對於需要精確控制PDF輸出的網絡和桌面應用程式非常理想。 IronPDF配合FileStream 這是使用IronPDF生成PDF並將其儲存到FileStream的範例。 這展示了IronPDF如何與FileStream順利整合,允許開發者以程式方式控制PDF的創建和儲存。 using System; using System.IO; using IronPdf; public class IronPDFExample { public static void Main() { // Define the file path string path = "output.pdf"; // Create an HTML string that we want to convert to PDF var htmlContent = "<h1>IronPDF Example</h1><p>This PDF was generated using IronPDF and saved with FileStream.</p>"; // Initialize IronPDF's ChromePdfRenderer to render HTML as PDF var renderer = new ChromePdfRenderer(); // Generate the PDF from the HTML string var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent); // Use FileStream to save the generated PDF using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write)) { pdfDocument.SaveAs(fileStream); } Console.WriteLine("PDF created and saved successfully."); } } using System; using System.IO; using IronPdf; public class IronPDFExample { public static void Main() { // Define the file path string path = "output.pdf"; // Create an HTML string that we want to convert to PDF var htmlContent = "<h1>IronPDF Example</h1><p>This PDF was generated using IronPDF and saved with FileStream.</p>"; // Initialize IronPDF's ChromePdfRenderer to render HTML as PDF var renderer = new ChromePdfRenderer(); // Generate the PDF from the HTML string var pdfDocument = renderer.RenderHtmlAsPdf(htmlContent); // Use FileStream to save the generated PDF using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write)) { pdfDocument.SaveAs(fileStream); } Console.WriteLine("PDF created and saved successfully."); } } $vbLabelText $csharpLabel 結論 C#中的FileStream類提供了強大的功能來管理檔案的輸入和輸出。 它允許開發者有效地讀寫數據,控制檔案中的當前位置,並通過理解位元組陣列、檔案路徑和流處理的工作原理進行非同步操作。 將FileStream與IronPDF結合使用,為開發者提供了靈活性,可以在.NET應用程式中有效地處理PDF。 無論您是在生成報告、保存文件,還是處理動態內容,這種組合都能在創建和存儲PDF文檔方面提供精細的控制。 IronPDF提供免費試用和$799授權費,是專業PDF生成需求的具有競爭力的解決方案。 常見問題解答 我如何在C#中進行文件讀寫操作? 您可以使用FileStream類別在C#中進行文件讀寫操作。它允許您打開文件並使用像Read和Write這樣的方法來高效地處理文件數據。 在C#中使用FileStream進行文件處理有什麼好處? FileStream對於處理二進位數據、管理大文件和高效地執行非同步文件操作非常有益。它優化內存使用並允許對文件數據處理進行精確控制。 FileStream如何處理大文件? FileStream通過使用緩衝來處理大文件,這會在內存中暫時存儲數據以最小化磁碟訪問。這提升了性能並使FileStream適合處理大文件。 FileStream可用於非同步文件操作嗎? 是的,FileStream支持非同步文件操作。您可以使用像ReadAsync和WriteAsync這樣的方法來提高應用程式性能,允許同時處理。 為什麼正確處置FileStream對象很重要? 正確處置FileStream對象對於釋放系統資源和防止文件鎖定至關重要。您可以使用using語句或調用Dispose方法來確保資源得到正確釋放。 如何在C#中整合PDF生成與文件處理? 您可以使用IronPDF在C#中整合PDF生成與文件處理。IronPDF允許您創建和操作PDF文檔,並使用FileStream保存它們,無縫結合文件處理和PDF創建。 IronPDF在PDF操作上有哪些功能? IronPDF提供創建、編輯和操作PDF功能,增加水印、合併文檔、拆分文件和應用密碼保護,使其成為.NET應用程式中全方位的PDF管理工具。 Jacob Mellor 立即與工程團隊聊天 首席技術官 Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。 相關文章 更新2026年2月20日 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多 更新2025年12月20日 RandomNumberGenerator C# 使用RandomNumberGenerator C#類可以幫助將您的PDF生成和編輯項目提升至新水準 閱讀更多 更新2025年12月20日 C#字符串等於(它如何對開發者起作用) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 C# 初始化列表 (如何為開發人員運作)C# 初始化關鍵字 (如何為開...
更新2026年2月20日 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多