在 C# 中使用文件和目录
C# 提供了以下类来处理文件系统。它们可用于访问目录、访问文件、打开文件进行读写、创建新文件或将现有文件从一个位置移动到另一个位置等。
类名 | 用法 |
---|---|
File | File 是一个静态类,提供不同的功能,如复制、创建、移动、删除、打开读写、加密或解密、检查文件是否存在、向文件内容追加行或文本、获取上次访问时间等。 |
FileInfo | FileInfo 类提供与静态 File 类相同的功能。通过手动编写代码来从文件中读取或写入字节,您可以更好地控制文件的读写操作。 |
Directory | Directory 是一个静态类,提供创建、移动、删除和访问子目录的功能。 |
DirectoryInfo | DirectoryInfo 提供实例方法用于创建、移动、删除和访问子目录。 |
Path | Path 是一个静态类,提供检索文件扩展名、更改文件扩展名、检索绝对物理路径以及其他与路径相关的功能。 |
File
C# 包含静态 File 类,用于对物理文件系统执行 I/O 操作。静态 File 类包含各种实用方法,用于与任何类型(例如二进制、文本等)的物理文件进行交互。
使用此静态 File 类可对物理文件执行一些快速操作。由于性能原因,不建议同时对多个文件使用 File 类进行多次操作。在这种情况下,请使用 FileInfo 类。
静态 File 类的重要方法
方法 | 用法 |
---|---|
AppendAllLines | 向文件追加行,然后关闭文件。如果指定的文件不存在,此方法将创建一个文件,将指定的行写入文件,然后关闭文件。 |
AppendAllText | 打开一个文件,将指定的字符串追加到文件,然后关闭文件。如果文件不存在,此方法将创建一个文件,将指定的字符串写入文件,然后关闭文件。 |
AppendText | 创建一个 StreamWriter,用于将 UTF-8 编码的文本追加到现有文件,如果指定文件不存在,则追加到新文件。 |
复制 | 将现有文件复制到新文件。不允许覆盖同名文件。 |
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.";
//Opens DummyFile.txt and append lines. If file is not exists then create and open.
File.AppendAllLines(@"C:DummyFile.txt", dummyLines.Split(Environment.NewLine.ToCharArray()).ToList<string>());
追加字符串
使用 File.AppendAllText() 方法将字符串追加到文件,只需一行代码,如下所示。
示例:将字符串追加到文件
//Opens DummyFile.txt and append Text. If file is not exists then create and open.
File.AppendAllText(@"C: DummyFile.txt", "This is File testing");
</code></pre>
<div className="card-footer example-footer"></div> </div>
</div>
<h2>Overwrite Text</h2>
<p>Use <i>File.WriteAllText()</i> method to write texts to the file. Please note that it will not append text but overwrite existing texts.</p>
<div className="card code-panel">
<div className="card-header example-title">Example: Overwrite existing texts</div>
<div className="panel-body">
<pre className="csharpcode">
<code>//Opens DummyFile.txt and write texts. If file is not exists then create and open.
File.WriteAllText(@"C:DummyFile.txt", "This is dummy text");
以下示例展示了如何使用静态 File 类执行不同的操作。
示例:多个文件操作
//Check whether file is exists or not at particular location
bool isFileExists = File.Exists(@"C: DummyFile.txt"); // returns false
//Copy DummyFile.txt as new file DummyFileNew.txt
File.Copy(@"C:DummyFile.txt", @"D:NewDummyFile.txt");
//Get when the file was accessed last time
DateTime lastAccessTime = File.GetLastAccessTime(@"C:DummyFile.txt");
//get when the file was written last time
DateTime lastWriteTime = File.GetLastWriteTime(@"C:DummyFile.txt");
// Move file to new location
File.Move(@"C:DummyFile.txt", @"D:DummyFile.txt");
//Open file and returns FileStream for reading bytes from the file
FileStream fs = File.Open(@"D:DummyFile.txt", FileMode.OpenOrCreate);
//Open file and return StreamReader for reading string from the file
StreamReader sr = File.OpenText(@"D:DummyFile.txt");
//Delete file
File.Delete(@"C:DummyFile.txt");
因此,使用静态 File 类处理物理文件很容易。但是,如果您需要更大的灵活性,请使用 FileInfo 类。同样,使用静态 Directory 类来处理物理目录。
访问 MSDN 了解静态 File 类的所有方法。