C#之Directory类、DirectoryInfo类和Fileinfo,File以及FilesSystemInfo

时间:2021-11-17 08:52:31

一 两者的共同点

都用于典型的操作,如复制、移动、重命名、创建、打开、删除和追加到文件

默认情况下,将向所有用户授予对新文件的完全读写访问权限。

二 两者的区别

File类是静态类,由于所有的File方法都是静态的,,所以如果只想执行一个操作,那么使用File方法的效率比使用相应的FileInfo实例方法可能更高。

所有的File方法都要求当前所操作的文件的路径。File类的静态方法对所有方法都执行安全检查。如果打算多次重用某个对象,可考虑改用FileInfo 的相应实例方法,因为并不总是需要安全检查。 

file,directory可以控制多个文件所以进行每次安全检查,而FileInfo,DirectoryInfo只能控制一个文件信息只进行一次安全处理。

filesysteminfo提供fileinfo和directoryinfo的共有方法,实现对文件或目录进行操作,当不确定操作的对象是文件还是目录时使用filesysteminfo就会很方便。

静态方法每次对文件进行操作过程是:静态方法存在于栈头,它是由类调用,然后寻找需要操作的文件。寻找需要操作文件的过程是个IO过程,耗时比较长。但它不必要到堆区去遍历实例化新对象。普通方法是由当时的对象调用,需要创建对象,new一个,(静态方法不需要此过程)但如果操作次数多的话,普通方法就不需要再次去执行不必要而且耗时的 IO操作,就能整体提速!

所以执行方法的次数也就能决定了使用哪个类的最佳选择。

三 Directory类常用的方法如下:

CreateDirectory:按指定路径创建所有文件夹和子文件夹。

Delete:删除指定文件夹。
Exists:检查指定路径的文件夹是否存在,存在,返回true。
GetCreationTime:返回指定文件或文件夹的创建日期和时间。
GetCurrentDirectory:获取应用程序的当前工作文件夹。
GetDirectories:获取指定文件夹中子文件夹的名称。
GetDirectoryRoot:返回指定路径的卷信息、根信息或两者同时返回。
GetFiles:返回指定文件夹中子文件的名称。
GetFileSystemEntries:返回指定文件夹中所有文件和子文件的名称。
GetLastAccessTime:返回上次访问指定文件或文件夹的创建日期和时间。
GetLastWriteTime:返回上次写入指定文件或文件夹的创建日期和时间。
GetLogicalDrives:检索计算机中的所有驱动器,例如A:、C:等等。
GetParent:获取指定路径的父文件夹,包括绝对路径和相对路径。
Move:将指定文件或文件夹及其内容移动到新位置。
SetCreationTime:设置指定文件或文件夹的创建日期和时间。
SetCurrentDirectory:将应用程序的当前工作文件夹设置指定文件夹。
SetLastAccessTime:设置上次访问指定文件或文件夹的日期和时间。
SetLastWriteTime:设置上次写入指定文件夹的日期和时间。

四目录创建方法:Directory.CreateDirectory

方法声明如下:public static DirectoryInfo CreateDirectory(string path);下面的代码演示在c:\Dir1文件夹下创建名为Dir2子文件夹。
Directory.CreateDirectory(@"c:\Dir1\Dir2");

五目录属性设置方法:DirectoryInfo.Atttributes

下面的代码设置c:\Dir1\Dir2目录为只读、隐藏。与文件属性相同,目录属性也是使用FileAttributes来进行设置的。
DirectoryInfo DirInfo=new DirectoryInfo(@"c:\Dir1\Dir2");
DirInfo.Atttributes=FileAttributes.ReadOnly|FileAttributes.Hidden;

六目录删除方法:Directory.Delete

该方法声明如下:public static void Delete(string path,bool recursive);下面的代码可以将c:\Dir1\Dir2目录删除。Delete方法的第二个参数为bool类型,它可以决定是否删除非空目录。如果该参数值为true,将删除整个目录,即使该目录下有文件或子目录;若为false,则仅当目录为空时才可删除。
Directory.Delete(@"c:\Dir1\Dir2",true);

七目录移动方法:Directory.Move