📜  C#System.IO命名空间(1)

📅  最后修改于: 2023-12-03 15:14:27.548000             🧑  作者: Mango

C# System.IO命名空间

System.IO是C#中非常重要的命名空间之一,它提供了许多用于进行输入/输出操作的类和接口。在本文中,我们将深入探讨System.IO命名空间及其各种类型的作用。

前置知识

在开始本文之前,需要先对以下概念有所了解:

  • 文件(File):用于在磁盘上存储数据。
  • 目录(Directory):用于管理文件和文件夹的集合。
  • 流(Stream):用于在程序和文件(或其他数据源)之间进行通信的抽象概念。
  • 编码(Encoding):指定如何将字符转换为字节和反向转换的系统。
System.IO命名空间的主要类型

以下是System.IO命名空间中的一些主要类型:

File类

File类提供了许多与文件系统交互的静态方法,例如创建、读取、写入、复制、移动和删除文件等操作。

例如,使用以下代码可以创建一个新文件:

string filePath = @"C:\temp\example.txt";
File.Create(filePath);
Directory类

Directory类提供了许多与目录系统交互的静态方法,例如创建、移动、重命名和删除目录等操作。与File类类似,它也提供了许多静态方法,可以帮助我们执行与目录相关的操作。

例如,我们可以使用以下代码创建一个新目录:

string directoryPath = @"C:\temp\example";
Directory.CreateDirectory(directoryPath);
FileInfo类

FileInfo类继承自FileSystemInfo类,用于表示一个文件,并提供了许多与文件相关的实例方法和属性。

例如,我们可以使用以下代码获取文件的最后修改时间:

string filePath = @"C:\temp\example.txt";
FileInfo fileInfo = new FileInfo(filePath);
DateTime lastModified = fileInfo.LastWriteTime;
DirectoryInfo类

DirectoryInfo类继承自FileSystemInfo类,用于表示一个目录,并提供了许多与目录相关的实例方法和属性。

例如,我们可以使用以下代码获取目录中的文件数:

string directoryPath = @"C:\temp\example";
DirectoryInfo directoryInfo = new DirectoryInfo(directoryPath);
int fileCount = directoryInfo.GetFiles().Length;
FileStream类

FileStream类继承自Stream类,用于从文件读取数据或向文件写入数据。

例如,我们可以使用以下代码打开一个文件,从中读取数据,并将其转换为字符串:

string filePath = @"C:\temp\example.txt";
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
{
    byte[] buffer = new byte[fileStream.Length];
    fileStream.Read(buffer, 0, buffer.Length);
    string text = Encoding.UTF8.GetString(buffer);
}
StreamReader和StreamWriter类

StreamReader和StreamWriter类都继承自TextWriter和TextReader类,用于从流中读取文本或将文本写入流中。

例如,我们可以使用以下代码打开一个文件,从中读取数据,并将其逐行输出到控制台:

string filePath = @"C:\temp\example.txt";
using (StreamReader reader = new StreamReader(filePath))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}
BinaryReader和BinaryWriter类

BinaryReader和BinaryWriter类都继承自Stream类,用于从流中读取二进制数据或将二进制数据写入流中。

例如,我们可以使用以下代码打开一个文件,从中读取数据,并将其转换为一个整数:

string filePath = @"C:\temp\example.bin";
using (FileStream fileStream = new FileStream(filePath, FileMode.Open))
using (BinaryReader reader = new BinaryReader(fileStream))
{
    int value = reader.ReadInt32();
}
总结

System.IO命名空间提供了许多用于进行输入/输出操作的类和接口。在本文中,我们深入了解了File、Directory、FileInfo、DirectoryInfo、FileStream、StreamReader、StreamWriter、BinaryReader和BinaryWriter这些类型的作用及其示例代码。了解这些类型将使您在处理文件系统时更加方便。