*在 C# 中,File 类和 FileInfo 类都是用于处理文件的类。它们都属于 System.IO 命名空间,但在使用方式和场景上有所不同。
File 类
File 类是一个静态类,提供了一组静态方法,用于对文件进行创建、复制、删除、移动和打开操作,并且可以帮助创建 FileStream 对象。
常用方法
File.Create:创建或覆盖一个文件。
File.Copy:复制现有文件到新文件。
File.Delete:删除指定的文件。
File.Exists:确定指定的文件是否存在。
File.Move:将指定的文件移动到新的位置。
File.ReadAllText:读取文件中的所有文本。
File.WriteAllText:将文本写入文件,如果文件存在则覆盖。
示例代码
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "example.txt";
// 创建文件并写入内容
File.WriteAllText(filePath, "Hello, File!");
// 检查文件是否存在
if (File.Exists(filePath))
{
// 读取文件内容
string content = File.ReadAllText(filePath);
Console.WriteLine($"文件内容: {content}");
}
// 复制文件
string copyPath = "copy_example.txt";
File.Copy(filePath, copyPath, true);
// 删除文件
File.Delete(filePath);
File.Delete(copyPath);
}
}
FileInfo 类
FileInfo 类是一个实例类,提供了实例方法和属性,用于对文件进行更详细的操作和获取文件信息。
常用方法和属性
FileInfo.Create:创建文件。
FileInfo.CopyTo:将现有文件复制到新文件。
FileInfo.Delete:删除文件。
FileInfo.MoveTo:将文件移动到新位置。
FileInfo.Length:获取文件的大小(字节数)。
FileInfo.Exists:确定文件是否存在。
FileInfo.LastAccessTime:获取或设置文件的上次访问时间。
示例代码
using System;
using System.IO;
class Program
{
static void Main()
{
string filePath = "example.txt";
FileInfo fileInfo = new FileInfo(filePath);
// 创建文件并写入内容
using (StreamWriter writer = fileInfo.CreateText())
{
writer.WriteLine("Hello, FileInfo!");
}
// 检查文件是否存在
if (fileInfo.Exists)
{
// 获取文件大小
long size = fileInfo.Length;
Console.WriteLine($"文件大小: {size} 字节");
// 读取文件内容
using (StreamReader reader = fileInfo.OpenText())
{
string content = reader.ReadToEnd();
Console.WriteLine($"文件内容: {content}");
}
// 复制文件
string copyPath = "copy_example.txt";
FileInfo copyInfo = fileInfo.CopyTo(copyPath, true);
// 删除文件
fileInfo.Delete();
copyInfo.Delete();
}
}
}
关键区别
1.静态 vs 实例:
File 类是静态类,直接通过类名调用方法。
FileInfo 类是实例类,需要创建对象实例来调用方法和属性。
2.方法调用:
File 类适合需要简单调用一次的文件操作。
FileInfo 类适合需要多次操作同一个文件,或需要获取文件的详细信息。
3.性能:
File 类的方法在每次调用时都会检查文件的存在性等元数据。
FileInfo 类创建实例时会获取文件的元数据,在后续操作中复用这些数据,适合多次操作同一个文件的场景。
通过理解 File 类和 FileInfo 类的这些知识点和区别,你可以在不同的场景中选择合适的类来处理文件操作。