在 C#中使用文件和目录
本文关键字:文件 | 更新日期: 2023-09-12 17:40:02
提供了以下类来处理文件系统。它们可用于访问目录、访问文件、打开文件进行读取或写入、创建新文件或将现有文件从一个位置移动到另一个位置等。
类名 | 用法 |
---|---|
File | File是一个静态类,它提供不同的功能,如复制,创建,移动,删除,打开读取或/写入,加密或解密,检查文件是否存在,将行或文本附加到文件的内容,获取上次访问时间等。 |
FileInfo | 类提供与静态 File 类相同的功能。通过手动编写代码以从文件中读取或写入字节,您可以更好地控制如何对文件执行读/写操作。 |
Directory | Directory 是一个静态类,提供用于创建、移动、删除和访问子目录的功能。 |
DirectoryInfo | DirectoryInfo提供了用于创建、移动、删除和访问子目录的实例方法。 |
Path | Path 是一个静态类,它提供的功能包括检索文件的扩展名、更改文件的扩展名、检索绝对物理路径和其他与路径相关的功能。 |
File
C# 包含静态 File 类,用于在物理文件系统上执行 I/O 操作。静态文件类包括各种实用程序方法,用于与任何类型的物理文件(例如二进制文件,文本等)进行交互。
使用此静态 File 类对物理文件执行一些快速操作。由于性能原因,不建议同时对多个文件使用 File 类进行多个操作。在这种情况下使用 FileInfo 类。
文件类的重要方法
方法 | 用法 | |
---|---|---|
AppendAllLines | 将行追加到文件,然后关闭该文件。如果指定的文件不存在,此方法将创建一个文件,将指定的行写入该文件,然后关闭该文件。 | |
AppendAllText | 打开一个文件,将指定的字符串追加到该文件,然后关闭该文件。如果该文件不存在,此方法将创建一个文件,将指定的字符串写入该文件,然后关闭该文件。 | |
AppendText | 创建一个 StreamWriter,该 StreamWriter 将 UTF-8 编码的文本追加到现有文件,或者追加到新文件(如果指定的文件不存在)。 | |
Copy | 将现有文件复制到新文件。不允许覆盖同名文件。 | |
Create | 创建或覆盖指定路径中的文件。 | |
CreateText | 创建或打开用于写入 UTF-8 编码文本的文件。 | |
Decrypt | 解密帐户使用 Encrypt 方法加密的文件。 | |
Delete | 删除指定的文件。 | |
Encrypt | 加密文件,以便只有用于加密文件的帐户才能解密文件。 | |
Exists | 确定指定的文件是否存在。 | |
GetAccessControl | 获取一个文件安全对象,该对象封装指定文件的访问控制列表 (ACL) 条目。 | |
Move | 将指定的文件移动到新位置,并提供指定新文件名的选项。 | |
Open | 指定路径上打开具有读/写访问权限的文件流。 | |
ReadAllBytes | 打开二进制文件,将文件的内容读入字节数组,然后关闭该文件。 | |
ReadAllLines | 打开一个文本文件,读取该文件的所有行,然后关闭该文件。 | |
ReadAllText | 打开一个文本文件,读取该文件的所有行,然后关闭该文件。 | |
Replace | 将指定文件的内容替换为另一个文件的内容,删除原始文件,并创建被替换文件的备份。 | |
WriteAllBytes | 创建一个新文件,将指定的字节数组写入该文件,然后关闭该文件。如果目标文件已存在,则会覆盖该文件。 | |
WriteAllLines | 创建一个新文件,将字符串集合写入该文件,然后关闭该文件。 | |
WriteAllText | 创建一个新文件,将指定的字符串写入该文件,然后关闭该文件。如果目标文件已存在,则会覆盖该文件。 |
追加文本行
使用 AppendAllLines() 方法将多个文本行追加到指定的文件,如下所示。
Example: Append all text lines to a file
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() 方法以单行代码将字符串追加到文件中,如下所示。
Example: Append string to a file
//Opens DummyFile.txt and append Text. If file is not exists then create and open.
File.AppendAllText(@"C: DummyFile.txt", "This is File testing");
覆盖文本
,请使用File.WriteAllText() 方法将文本写入文件。请注意,它不会附加文本,而是覆盖现有文本。
Example: Overwrite existing texts
//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 类执行不同的操作。
Example: Multiple File operations
//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");
因此,使用静态文件类处理物理文件很容易。但是,如果您想要更大的灵活性,请使用 FileInfo 类。同样,使用静态目录类来处理物理目录。
注意:
- File 是一个静态类,用于从物理文件读取,编码较少。
- 静态文件类为物理文件提供创建、读写、复制、移动、删除等功能。
- 静态目录类为编码较少的物理目录提供创建、复制、移动、删除等功能。
- FileInfo 和 DirectoryInfo 类提供与静态 File 和 Directory 类相同的功能。