C# 文件和目录
C#提供了以下用于文件系统的类。它们可用于访问目录,访问文件,打开文件以进行读取或写入,创建新文件或将现有文件从一个位置移动到另一位置等。
类名称 | 用法 |
---|---|
File | File是一个静态类,提供不同的功能,例如复制,创建,移动,删除,打开以进行读取或写入,加密或解密,检查文件是否存在,在文件内容中添加行或文本,获取上次访问时间等。 |
FileInfo | FileInfo类提供与静态File类相同的功能。通过手动编写用于从文件读取或写入字节的代码,您可以更好地控制对文件的读/写操作。 |
Directory | 目录是一个静态类,提供创建,移动,删除和访问子目录的功能。 |
DirectoryInfo | DirectoryInfo提供了用于创建,移动,删除和访问子目录的实例方法。 |
Path | Path是一个静态类,提供一些功能,例如检索文件扩展名,更改文件扩展名,检索绝对物理路径以及其他与路径相关的功能。 |
文件(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 类处理物理目录。
要记住的要点
File 是一个静态类,可以用较少的编码从物理文件读取\写入。
静态 File 类为物理文件提供了诸如创建,读取\写入,复制,移动,删除等功能。
静态 Directory 类以更少的编码为物理目录提供了诸如创建,复制,移动,删除等功能。
FileInfo 和 DirectoryInfo 类提供与静态File和Directory类相同的功能。