zoukankan      html  css  js  c++  java
  • C# 去除文件和文件夹的只读属性

    当我们使用 DirectoryInfo dir = Directory.CreateDirectory(pathName) 创建目录或者创建一个文件后,有时作为临时文件用完以后需要删除掉,使用File.delete()或者Directory.Delete()经常会遇到“访问被拒绝的错误”;这时我们需要设置文件或者文件夹的只读属性,再进行删除。

    去除文件夹的只读属性:  System.IO.DirectoryInfo DirInfo = new DirectoryInfo(“filepath”);
                           DirInfo.Attributes = FileAttributes.Normal & FileAttributes.Directory;

    去除文件的只读属性: System.IO.File.SetAttributes("filepath", System.IO.FileAttributes.Normal);

     

    FileAttributes 枚举

    提供文件和目录的属性。

    此枚举有一个 FlagsAttribute 属性,允许其成员值按位组合。

    命名空间:System.IO
    程序集:mscorlib(在 mscorlib.dll 中)

     语法

    [SerializableAttribute] 
    [FlagsAttribute] 
    [ComVisibleAttribute(true)] 
    public enum FileAttributes

     成员名称说明
    由 .NET Compact Framework 支持 Archive 文件的存档状态。应用程序使用此属性为文件加上备份或移除标记。 
    由 .NET Compact Framework 支持 Compressed 文件已压缩。 
    由 .NET Compact Framework 支持 Device 保留供将来使用。 
    由 .NET Compact Framework 支持 Directory 文件为一个目录。 
    由 .NET Compact Framework 支持 Encrypted 该文件或目录是加密的。对于文件来说,表示文件中的所有数据都是加密的。对于目录来说,表示新创建的文件和目录在默认情况下是加密的。 
    由 .NET Compact Framework 支持 Hidden 文件是隐藏的,因此没有包括在普通的目录列表中。 
    由 .NET Compact Framework 支持 Normal 文件正常,没有设置其他的属性。此属性仅在单独使用时有效。 
    由 .NET Compact Framework 支持 NotContentIndexed 操作系统的内容索引服务不会创建此文件的索引。 
    由 .NET Compact Framework 支持 Offline 文件已脱机。文件数据不能立即供使用。 
    由 .NET Compact Framework 支持 ReadOnly 文件为只读。 
    由 .NET Compact Framework 支持 ReparsePoint 文件包含一个重新分析点,它是一个与文件或目录关联的用户定义的数据块。 
    由 .NET Compact Framework 支持 SparseFile 文件为稀疏文件。稀疏文件一般是数据通常为零的大文件。 
    由 .NET Compact Framework 支持 System 文件为系统文件。文件是操作系统的一部分或由操作系统以独占方式使用。 
    由 .NET Compact Framework 支持 Temporary

    文件是临时文件。文件系统试图将所有数据保留在内存中以便更快地访问,而不是将数据刷新回大容量存储器中。不再需要临时文件时,应用程序会立即将其删除。

     

     

    FileAttributes的简单应用

    常用的FileAttributes成员有Hidden,System,Archive,ReadOnly,Directory等等。这些对象可以进行位域运算,通过位或运算给文件附上属性。如:File.setAttribute(filename,FileAttribute.Hidden|FileAttribute.ReadOnly)则,filename文件就拥有Hidden和ReadOnly两种属性。

    在数值和标志枚举常量之间执行按位“与”操作就可以测试数值中是否已设置标志,这种方法会将数值中与标志不对应的所有位都设置为零,然后测试该操作的结果是否等于该标志枚举常量。
    仍然是MSDN中的例子:

    using System;
    using System.IO;
    using System.Text;
    class Test
    {
    public static void Main()
    {
    string path = @"c:\temp\MyTest.txt";
    // Create the file if it does not exist.
    if (!File.Exists(path))
    {
    File.Create(path);
    }
    if ((File.GetAttributes(path) & FileAttributes.Hidden) == FileAttributes.Hidden)
    {
    // Show the file.
    File.SetAttributes(path, FileAttributes.Archive);
    Console.WriteLine("The {0} file is no longer hidden.", path);
    }
    else
    {
    // Hide the file.
    File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
    Console.WriteLine("The {0} file is now hidden.", path);
    }
    }
    }


    ps:FileAttributes.Archive是文档的存档状态,应用程序使用该属性为文件加上备份或删除标记。

  • 相关阅读:
    前端设计网站收藏
    JAVA的StringBuffer类
    JDBC连接数据库
    JSP中request属性的用法
    jquery学习
    servlet学习(一)
    javascript 计算器
    xml学习(一)
    网站之单点登录简单思路
    关于ASP.NET中Menu控件在浏览器中不正常显示解决方法
  • 原文地址:https://www.cnblogs.com/hanmos/p/1946974.html
Copyright © 2011-2022 走看看