C# 文件和目录

C#提供了以下用于文件系统的类。它们可用于访问目录,访问文件,打开文件以进行读取或写入,创建新文件或将现有文件从一个位置移动到另一位置等。

类名称用法
FileFile是一个静态类,提供不同的功能,例如复制,创建,移动,删除,打开以进行读取或写入,加密或解密,检查文件是否存在,在文件内容中添加行或文本,获取上次访问时间等。
FileInfoFileInfo类提供与静态File类相同的功能。通过手动编写用于从文件读取或写入字节的代码,您可以更好地控制对文件的读/写操作。
Directory目录是一个静态类,提供创建,移动,删除和访问子目录的功能。  
DirectoryInfoDirectoryInfo提供了用于创建,移动,删除和访问子目录的实例方法。  
PathPath是一个静态类,提供一些功能,例如检索文件扩展名,更改文件扩展名,检索绝对物理路径以及其他与路径相关的功能。

文件(File)

C# 包含静态 File 类,用于在物理文件系统上执行 i/o 操作。静态文件类包括各种实用方法,可以与任何类型的物理文件(如二进制文件、文本文件等)进行交互。

使用此静态File类对物理文件执行一些快速操作。由于性能原因,不建议将File类同时用于多个文件的多个操作。在这种情况下使用FileInfo类。

静态File类的重要方法

方法用法
AppendAllLines将行追加到文件,然后关闭该文件。如果指定的文件不存在,则此方法将创建一个文件,将指定的行写入该文件,然后关闭该文件。
AppendAllText打开一个文件,将指定的字符串附加到该文件,然后关闭该文件。如果该文件不存在,则此方法将创建一个文件,将指定的字符串写入该文件,然后关闭该文件。
AppendText创建一个StreamWriter,它将UTF-8编码的文本附加到现有文件,或者如果指定的文件不存在,则附加到新文件。
Copy将现有文件复制到新文件。不允许覆盖同名文件。
Create在指定路径中创建或覆盖文件。
CreateText创建或打开用于写入UTF-8编码文本的文件。
Decrypt使用Encrypt方法解密由当前帐户加密的文件。
Delete删除指定的文件。
Encrypt加密文件,以便只有用于加密文件的帐户才能解密该文件。
Exists确定指定的文件是否存在。
GetAccessControl获取一个FileSecurity对象,该对象封装了指定文件的访问控制列表(ACL)条目。
Move将指定的文件移动到新位置,并提供指定新文件名的选项。
Open在具有读取/写入访问权限的指定路径上打开FileStream。
ReadAllBytes打开一个二进制文件,将文件的内容读入字节数组,然后关闭该文件。
ReadAllLines打开一个文本文件,读取文件的所有行,然后关闭文件。
ReadAllText打开一个文本文件,读取文件的所有行,然后关闭文件。
Replace用另一个文件的内容替换指定文件的内容,删除原始文件,并创建替换文件的备份。
WriteAllBytes创建一个新文件,将指定的字节数组写入该文件,然后关闭该文件。如果目标文件已经存在,则将其覆盖。
WriteAllLines创建一个新文件,将字符串集合写入该文件,然后关闭该文件。
WriteAllText创建一个新文件,将指定的字符串写入该文件,然后关闭该文件。如果目标文件已经存在,则将其覆盖。

追加文字行

使用AppendAllLines()方法将多行文本添加到指定文件,如下所示。

string dummyLines = "This is first line." + Environment.NewLine +
                    "This is second line." + Environment.NewLine +
                    "This is third line.";

//打开DummyFile.txt并追加行。如果文件不存在,则创建并打开。
File.AppendAllLines(@"C:\DummyFile.txt", dummyLines.Split(Environment.NewLine.ToCharArray()).ToList<string>());

追加字符串

使用 File.AppendAllText ()方法将字符串追加到单行代码的文件中,如下所示。

//打开DummyFile.txt并附加文本。如果文件不存在,则创建并打开。
File.AppendAllText(@"C:\ DummyFile.txt", "This is File testing");

覆盖文本

使用File.WriteAllText()方法将文本写入文件。请注意,它不会追加文本,但覆盖现有的文本。

    示例:覆盖现有文本

//打开DummyFile.txt并编写文本。如果文件不存在,则创建并打开。
File.WriteAllText(@"C:\DummyFile.txt", "This is dummy text");

下面的示例演示如何使用静态File类执行不同的操作。

//检查文件在特定位置是否存在
bool isFileExists = File.Exists(@"C:\ DummyFile.txt"); // 返回假

//将DummyFile.txt复制为新文件DummyFileNew.txt
File.Copy(@"C:\DummyFile.txt", @"D:\NewDummyFile.txt");

//获取上次访问文件的时间 
DateTime lastAccessTime = File.GetLastAccessTime(@"C:\DummyFile.txt");

//获取上次写入文件的时间
DateTime lastWriteTime = File.GetLastWriteTime(@"C:\DummyFile.txt");

// 将文件移到新位置
File.Move(@"C:\DummyFile.txt", @"D:\DummyFile.txt");

//打开文件并返回FileStream以从文件读取字节
FileStream fs = File.Open(@"D:\DummyFile.txt", FileMode.OpenOrCreate);

//打开文件并返回StreamReader以从文件中读取字符串
StreamReader sr = File.OpenText(@"D:\DummyFile.txt");
    
//删除文件
File.Delete(@"C:\DummyFile.txt");

因此,使用静态 File 类很容易处理物理文件。但是,如果您想要更多的灵活性,那么可以使用 FileInfo 类。同样,使用静态 Directory 类处理物理目录。

要记住的要点

  1. File 是一个静态类,可以用较少的编码从物理文件读取\写入。

  2. 静态 File 类为物理文件提供了诸如创建,读取\写入,复制,移动,删除等功能。

  3. 静态 Directory 类以更少的编码为物理目录提供了诸如创建,复制,移动,删除等功能。

  4. FileInfo 和 DirectoryInfo 类提供与静态File和Directory类相同的功能。