C# 教程login
C# 教程
作者:php.cn  更新時間:2022-04-11 14:06:23

C# 檔案的輸入與輸出



一個 檔案 是一個儲存在磁碟中帶有指定名稱和目錄路徑的資料集合。當開啟檔案進行讀寫時,它變成一個

從根本上來說,流是透過通訊路徑傳遞的位元組序列。有兩個主要的流:輸入流輸出流輸入流用於從檔案讀取資料(讀取操作),輸出流用於寫入資料到檔案(寫入操作)。

C# I/O 類

System.IO 命名空間有各種不同的類,用於執行各種檔案操作,如建立和刪除檔案、讀取或寫入文件,關閉文件等。

下表列出了一些System.IO 命名空間中常用的非抽象類別:

#I/O 類別描述
BinaryReader從二進位流讀取原始資料。
BinaryWriter以二進位格式寫入原始資料。
BufferedStream位元組流的暫存。
Directory有助於操作目錄結構。
DirectoryInfo用於對目錄執行操作。
DriveInfo提供磁碟機的資訊。
File有助於處理檔案。
FileInfo用於對檔案執行操作。
FileStream用於檔案中任何位置的讀寫。
MemoryStream用於隨機存取儲存在記憶體中的資料流。
Path對路徑資訊執行操作。
StreamReader用於從位元組流讀取字元。
StreamWriter用於在一個流中寫入字元。
StringReader用於讀取字串緩衝區。
StringWriter用於寫入字串緩衝區。

FileStream 類別

System.IO 命名空間中的 FileStream 類別有助於檔案的讀寫與關閉。該類別派生自抽象類別 Stream。

您需要建立一個 FileStream 物件來建立一個新的文件,或開啟一個已有的文件。建立FileStream 物件的語法如下:

FileStream <object_name> = new FileStream( <file_name>,
<FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);

例如,建立一個FileStream 物件F 來讀取名為sample.txt 的檔案:

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
Truncate:開啟一個現有的文件,一旦文件打開,就會被截斷為零位元組大小。然後我們可以向文件寫入全新的數據,但保留文件的初始建立日期。如果檔案不存在,則拋出異常。 、ReadWrite 和。
參數
##FileMode

##FileMode

    ##FileMode
  • ##FileMode# 枚舉定義了各種開啟檔案的方法。 FileMode 枚舉的成員有:

  • Append:開啟一個已有的文件,並將遊標放置在文件的末端。如果文件不存在,則建立文件。

  • Create:建立一個新的檔案。如果文件已存在,則刪除舊文件,然後建立新文件。

  • CreateNew:指定作業系統應建立一個新的檔案。如果檔案已存在,則拋出異常。

  • Open:開啟一個已有的檔案。如果檔案不存在,則拋出異常。

  • OpenOrCreate:指定作業系統應開啟一個已有的檔案。如果文件不存在,則用指定的名稱建立新的文件開啟。

FileAccess#FileAccess 列舉的成員有:

Read
Write

FileShare
  • FileShare 列舉的成員有:

  • Inheritable:允許檔案句柄可由子程序繼承。 Win32 不直接支援此功能。

  • None:謝絕共享目前檔案。文件關閉前,打開該文件的任何請求(由此進程或另一個進程發出的請求)都會失敗。

    ############Read###:允許隨後開啟檔案讀取。如果未指定此標誌,則在檔案關閉前,任何開啟該檔案以進行讀取的請求(由此進程或另一進程發出的請求)都會失敗。但是,即使指定了此標誌,仍可能需要附加權限才能夠存取該檔案。 ###
  • ReadWrite:允許隨後開啟檔案讀取或寫入。如果未指定此標誌,則在檔案關閉前,任何開啟該檔案以進行讀取或寫入的請求(由此進程或另一進程發出)都會失敗。但是,即使指定了此標誌,仍可能需要附加權限才能夠存取該檔案。

  • Write:允許隨後開啟檔案寫入。如果未指定此標誌,則在檔案關閉前,任何開啟該檔案以進行寫入的請求(由此進程或另一進程序發出的請求)都會失敗。但是,即使指定了此標誌,仍可能需要附加權限才能夠存取該檔案。

  • Delete:允許隨後刪除檔案。

實例

在下面的程式示範了FileStream 類別的用法:

using System;
using System.IO;

namespace FileIOApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            FileStream F = new FileStream("test.dat", 
            FileMode.OpenOrCreate, FileAccess.ReadWrite);

            for (int i = 1; i <= 20; i++)
            {
                F.WriteByte((byte)i);
            }

            F.Position = 0;

            for (int i = 0; i <= 20; i++)
            {
                Console.Write(F.ReadByte() + " ");
            }
            F.Close();
            Console.ReadKey();
        }
    }
}

當上面的程式碼被編譯和執行時,它會產生下列結果:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

C# 高階檔案操作

上面的實例示範了C# 中簡單的檔案操作。但是,要充分利用 C# System.IO 類別的強大功能,您需要知道這些類別常用的屬性和方法。

在下面的章節中,我們將討論這些類別和它們執行的操作。請點擊連結以詳細了解各個部分的知識:

主題#描述
文字檔案的讀寫它涉及到文字檔案的讀寫。 StreamReaderStreamWriter 類別有助於完成文字檔案的讀寫。
二進位檔案的讀寫它涉及到二進位檔案的讀寫。 BinaryReaderBinaryWriter 類別有助於完成二進位檔案的讀寫。
Windows 檔案系統的動作它讓 C# 程式設計師能夠瀏覽並定位 Windows 檔案和目錄。

PHP中文網