zoukankan      html  css  js  c++  java
  • 用 C# 轻松读取、改变文件的创建、修改、访问时间

    创建时间是文件存入到电脑中的时间,而修改时间则是改变起内容的最后时间
    // 读取文件的创建、修改、访问时间
    FileInfo fi = new FileInfo("C://test.txt");
    Console.WriteLine(fi.CreationTime.ToString());
    Console.WriteLine(fi.LastWriteTime.ToString());
    Console.WriteLine(fi.LastAccessTime.ToString());
    
    // 改变(设置)文件的创建、修改、访问时间
    File.SetCreationTime("C://test.txt", DateTime.Now.AddYears(-1));
    File.SetLastWriteTime("C://test.txt", DateTime.Now.AddYears(-2));
    File.SetLastAccessTime("C://test.txt", DateTime.Now.AddYears(-3));

    FileInfo 和 File 的名称空间是:

    System.IO
    ================================================
    以文件只读和隐藏属性为例,其他属性,比如“存档”、“系统”等,方法类似。

    读取文件只读和隐藏属性

    FileInfo fi = new FileInfo("C://test.txt");
    if ((fi.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
    {
        Console.WriteLine("是只读");
    }
    else
    {
        Console.WriteLine("不是只读");
    }
    
    if ((fi.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
    {
        Console.WriteLine("是隐藏");
    }
    else
    {
        Console.WriteLine("不是隐藏");
    }


    设置文件只读和隐藏属性

    FileInfo fi = new FileInfo("C://test.txt");
    fi.Attributes = fi.Attributes | FileAttributes.ReadOnly | FileAttributes.Hidden; // 法一
    //File.SetAttributes("C://test.txt", fi.Attributes | FileAttributes.ReadOnly | FileAttributes.Hidden); // 法二

    可以看出,既可通过设置 Attributes 属性,也可通过利用 File 的 SetAttributes 方法来到目的。

    说明的是,不管怎样做,都要先获取文件的原属性,如果不获取文件的原属性,直接就是 FileAttributes.ReadOnly | FileAttributes.Hidden,那么,可能会导致一些属性丢失,比如文件以前可能有“存档”属性,直接这样设置的话,存档属性就丢失了。

    取消文件只读和隐藏属性

    FileInfo fi = new FileInfo("C://test.txt");
    fi.Attributes = fi.Attributes & ~FileAttributes.ReadOnly & ~FileAttributes.Hidden; // 法一
    //File.SetAttributes("C://test.txt", fi.Attributes & ~FileAttributes.ReadOnly & ~FileAttributes.Hidden); // 法二

    类似于设置,只是一些运算符号变了。注意,网上的说法是直接设置属性为 FileAttributes.Normal,这是不对的,这不仅取消了只读和隐藏属性,可能还取消了其他一些属性,比如“存档”。


    说明

    不当的属性设置,可能导致文件无法在 Windows 资源管理器中显示出来,但又确实存在,此时可以利用 FileAttributes.Normal 将文件显示出来,方便操作。

    以下转载:

    C#File以及FileInfo对文件的操作

    使用File操作文件

    //使用file的静态方法进行复制
                File.Copy(path, destpath);
                //使用File的静态方法删除路径下的一个文件
                File.Delete(path);
                //使用File的静态方法移动路径下的一个文件
                File.Move(path, destpath);
                File.ReadAllText(path); //打开一个文本文件*.txt ,读取文件中数据,然后关闭该文件
                //写入
                File.WriteAllText(path, "要写入文件的字符串"); //创建一个文件,向其中写入数据,如果此路径下有同名文件则会覆 

    PS:对文件进行写入操作,如果路径下有同名文件则会进行覆盖,所以最好进行一次判断,跟用户交互一下在进行覆盖

    使用FileInfo操作文件

    FileInfo myfile = new FileInfo(path); //声明一个对象对某一个文件进行操作
    myfile.CopyTo(destpath);  //对文件进行复制操作,复制路径为destpath
    myfile.MoveTo(destpath);  //进行移动操作
    myfile.Delete();          //进行删除操作

    获得某一文件或文件夹的详细信息(创建日期,最后一次修改日期等等

    FileInfo myfile = new FileInfo(path); //声明一个对象对某一个文件进行操作
    DateTime dt = myfile.CreationTime;  //获取或设置文件/文件夹的创建日期
    string filepath = myfile.DirectoryName; //仅能用于FileInfo,获得完整的路径名,路径+文件名
    bool file = myfile.Exists;              //此属性的值表示文件或文件夹是否存在,存在会返回True
    string fullname = myfile.FullName;     //获取文件或文件夹的完整路径名
    DateTime lastTime = myfile.LastAccessTime; //获取或设置最后一次访问文件或文件夹的时间
    DateTime lastWrite = myfile.LastWriteTime; //获取或设置最后一次修改文件夹或文件夹的时间
    string name = myfile.Name;                 //获取文件名,不能修改哦
    long length = myfile.Length;                  //返回文件的字节大小
    //CreationTime,LastAccessTime,LastWriteTime都是可以被修改的。

    如何选择用哪一个类? File or FileInfo
    Directory/File只包含静态方法,不能被实例化,只需要提供合适的文件系统对象路径就可以使用,使用效率较高
    当只对文件或文件夹执行一次操作,使用这些就很有效。
    DirectoryInfo/FileInfo 如果使用一个对象执行多个操作,使用这些类就很高效。
    因为它们在构造时就读取了文件系统对象的身份验证和其他信息,无论调用了多少方法,都不需要再次读取这些信息。
    上面只列出了操作文件,操作文件夹则需要用DirectoryInfo或Directory 

  • 相关阅读:
    129. Sum Root to Leaf Numbers
    113. Path Sum II
    114. Flatten Binary Tree to Linked List
    112. Path Sum
    100. Same Tree
    300. Longest Increasing Subsequence
    72. Edit Distance
    自定义js标签库
    JS 实现Table相同行的单元格自动合并示例代码
    mysql 高版本only_full_group_by 错误
  • 原文地址:https://www.cnblogs.com/xcsn/p/4678317.html
Copyright © 2011-2022 走看看