DirectoryInfo类与FileInfo类一个,是实例化类,DirectoryInfo类的功能与Directory的静态类一样主要用于管理文件夹操作,它与FileInfo类共享了许多相同的方法和属性,因为这两个类都有一个相同的抽象基类:FileSystemInfo。
在Directory类中每个方法调用都需要进行安全性检查,已确认是否有权限执行这个方法。这对于频繁是的方法来说,需要损失一个性能,DirectoryInfo类在调用之前,已经完成了安全性检查工作,但是,使用前,必须先实例化DirectoryInfo类,所以,一般对于只执行一次或执行较少的方法用Directory类,而相对频繁反复的方法,则应考虑使用DirectoryInfo类
下面用代码来比较Directory和DirectoryInfo两个类的区别
const string sourcePath = @"D:\lichenDirectoryInfo";
const string destPath = @"D:\lichenDirectoryInfo1";
//使用构造函数DirevtoryInfo
DirectoryInfo di = new DirectoryInfo(sourcePath);
if (!di.Exists)
{
di.Create();
}
//创建子目录SubDirectory
di.CreateSubdirectory("SubDirectory");
Console.WriteLine("{0}的信息为",di.FullName);//FullName 获取目录或文件的完整目录,这里是前者
Console.WriteLine("父目录是{0}",di.Parent.FullName);
Console.WriteLine("根目录{0}",di.Root.FullName);
Console.WriteLine("属性{0}",di.Attributes.ToString());
Console.WriteLine("建立时间{0}",di.CreationTime.ToString());
Console.WriteLine("最后一次访问时间{0}",di.LastAccessTime.ToString());
Console.WriteLine("获取最后一次写入时间{0}",di.LastWriteTime.ToString());
Console.WriteLine("文件夹被移动");
if (Directory.Exists(destPath))
{
Directory.Delete(destPath, true);//这里的用的true是删除子文件和子目录
}
di.MoveTo(destPath);
Console.WriteLine("文件夹被被删除");
if (Directory.Exists(di.FullName+ @"SubDirectory"));
{
Directory.Delete(di.FullName+@"SubDirectory");
}
di.Delete();