C#文件(I/O)

文件是存儲在具有特定名稱和目錄路徑的磁盤中的數據的集合。當文件打開以進行讀取或寫入時,它將成爲流。

流基本上是通過通信路徑的字節序列。有兩個主要流:輸入流和輸出流。輸入流用於從文件讀取數據(讀取操作),輸出流用於寫入文件(寫入操作)。

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);
  • FileMode - FileMode枚舉器定義打開文件的各種方法。FileMode枚舉器的成員有:

    • Append:它打開一個現有的文件,並將光標放在文件的最後,或者如果該文件不存在則創建此文件。
    • Create:它創建一個新文件。
    • CreateNew: 它向操作系統指定它應該創建一個新的文件。
    • Open:它打開一個現有文件。
    • OpenOrCreate:它向操作系統指定它應該打開一個文件(如果存在),否則應該創建一個新的文件。
    • Truncate:它打開一個現有文件,並將其大小截斷爲零字節。
  • FileAccess - FileAccess枚舉器有成員:ReadReadWriteWrite

  • FileShare - FileShare枚舉器具有以下成員:

    • Inheritable:它允許文件句柄將繼承傳遞給子進程。
    • None:它會拒絕當前文件的共享
    • Read:它允許打開文件進行讀取
    • ReadWrite:它允許打開文件進行閱讀和寫入
    • Write:它允許打開文件進行寫入

示例

以下程序演示瞭如何使用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類的強大功能,需要知道這些類常用的屬性和方法。

System.IO類中一此最常用的方法和示例如下所列 -

  • 讀取和寫入文本文件 - 它涉及到閱讀和寫入文本文件。StreamReaderStreamWriter類有助於完成它。

  • 讀取和寫入二進制文件 - 它涉及從二進制文件讀取和寫入。BinaryReaderBinaryWriter類有助於完成此操作。

  • 操作Windows文件系統 - 它爲 C# 程序員提供瀏覽和查找Windows文件和目錄的能力。