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()方法将多行文本添加到指定文件,如下所示。

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

追加字符串

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

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

覆盖文本

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

示例:覆盖现有文本

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

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

//检查文件在特定位置是否存在boolisFileExists=File.Exists(@"C:\DummyFile.txt");//返回假//将DummyFile.txt复制为新文件DummyFileNew.txtFile.Copy(@"C:\DummyFile.txt",@"D:\NewDummyFile.txt");//获取上次访问文件的时间DateTimelastAccessTime=File.GetLastAccessTime(@"C:\DummyFile.txt");//获取上次写入文件的时间DateTimelastWriteTime=File.GetLastWriteTime(@"C:\DummyFile.txt");//将文件移到新位置File.Move(@"C:\DummyFile.txt",@"D:\DummyFile.txt");//打开文件并返回FileStream以从文件读取字节FileStreamfs=File.Open(@"D:\DummyFile.txt",FileMode.OpenOrCreate);//打开文件并返回StreamReader以从文件中读取字符串StreamReadersr=File.OpenText(@"D:\DummyFile.txt");//删除文件File.Delete(@"C:\DummyFile.txt");

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

要记住的要点

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

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

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

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

编辑于2024-05-20 13:41