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


    一 两者的共同点

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

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

    二 两者的区别

    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:Dir1Dir2");

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

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

    六目录删除方法:Directory.Delete

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

    七目录移动方法:Directory.Move

    该方法声明如下:public static void Move(string sourceDirName,string destDirName);下面的代码将目录c:Dir1Dir2移动到c:Dir3Dir4。
    File.Move(@"c:Dir1Dir2",@"c:Dir3Dir4");}

    八获取当前目录下所有子目录:Directory.GetDirectories

    该方法声明如下:public static string[] GetDirectories(string path;);下面的代码读出c:Dir1目录下的所有子目录,并将其存储到字符串数组中。
    string [] Directorys;
    Directorys = Directory. GetDirectories (@"c:Dir1");
    获得所有逻辑盘符:
    string[] AllDrivers=Directory.GetLogicalDrives();

    九获取当前目录下的所有文件方法:Directory.GetFiles

    该方法声明如下:public static string[] GetFiles(string path;);下面的代码读出c:Dir1目录下的所有文件,并将其存储到字符串数组中。
    string [] Files;
    Files = Directory. GetFiles (@"c:Dir1",);

    十判断目录是否存在方法:Directory.Exist

    该方法声明如下:public static bool Exists(string path;);下面的代码判断是否存在c:Dir1Dir2目录。
    if(File.Exists(@"c:Dir1Dir2"))//判断目录是否存在
    {…}//处理语句
    注意:路径有3种方式,当前目录下的相对路径、当前工作盘的相对路径、绝对路径。以C:dir1dir2为例(假定当前工作目录为C:Tmp)。“dir2”,“dir1dir2”,“C:dir1dir2”都表示C: dir1dir2。另外,在C#中 “”是特殊字符,要表示它的话需要使用“\”。由于这种写法不方便,C#语言提供了@对其简化。只要在字符串前加上@即可直接使用“”。所以上面的路径在C#中应该表示为”dir2”,@”dir1dir2”,@”C:dir1dir2”。

     

  • 相关阅读:
    残疾流浪歌手的令人陶醉的声音
    关于浏览器参数的获取
    项目开发文档模板
    scoped_ptr源码
    从逗号分隔的字符串中删除某个子串的js函数
    合并两个数组的js函数
    comutil.h移值(_com_error,_bstr_t,_variant_t类的移值)
    判断两个对象是否相等的js函数
    托管可执行文件的结构(The Structure of a Managed Executable File)
    访问cookie的js函数
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/6743215.html
Copyright © 2020-2023  润新知