.net core 中directory , directoryinfo ,file, fileinfo区别,联系,场景
一、类定义及核心功能
Directory类
类型:静态类
功能:提供目录操作的静态方法,包括创建、删除、移动目录,以及获取子目录或文件列表等。例如Directory.CreateDirectory()、Directory.GetFiles()。
适用场景:单次目录操作,无需实例化。
DirectoryInfo类
类型:实例类(需通过构造函数创建对象)
功能:通过实例方法操作目录,支持对同一目录多次操作。例如MoveTo()、GetFiles()。
适用场景:需重复访问同一目录时,性能优于静态类。
File类
类型:静态类
功能:提供文件操作的静态方法,如创建、复制、删除文件,以及读写内容。例如File.ReadAllText()、File.Copy()。
适用场景:单次文件操作。
FileInfo类
类型:实例类(需实例化对象)
功能:通过实例方法操作文件,支持对同一文件多次操作。例如CopyTo()、Open()。
适用场景:频繁访问同一文件时更高效。
二、区别与联系
联系:
均属于System.IO命名空间,用于文件系统管理。
静态类与实例类功能互补,静态类适合轻量操作,实例类适合复杂场景。
三、使用注意事项
性能优化
对同一文件/目录多次操作时,优先使用FileInfo/DirectoryInfo,减少安全检查开销。
单次操作(如检查文件是否存在)可选用静态类,代码更简洁。
异常处理
操作前需验证路径合法性(如Directory.Exists()或File.Exists()),避免IOException或UnauthorizedAccessException。
实例类需注意对象状态,如文件被删除后再次调用方法可能引发异常。
跨平台兼容性
在.NET Core中,路径分隔符需使用Path.Combine()处理,避免硬编码\或/。
注意权限差异(如Linux系统对文件权限敏感)。
资源释放
使用FileStream或StreamReader时,需显式调用Dispose()或通过using语句释放资源。
路径规范
避免空路径或非法字符(如*、?),可通过Path.GetInvalidPathChars()校验。
四、示例场景
单次文件操作(静态类):
csharp
if (File.Exists(“test.txt”))
{
string content = File.ReadAllText(“test.txt”);
}
重复目录操作(实例类):
csharp
var dirInfo = new DirectoryInfo(@“C:\Logs”);
if (!dirInfo.Exists) dirInfo.Create();
foreach (var file in dirInfo.GetFiles(“*.log”))
{
file.CopyTo(Path.Combine(dirInfo.FullName, “backup”, file.Name));
}