【问题标题】:C# make file read/write from readonlyC#使文件从只读读/写
【发布时间】:2011-11-10 14:41:50
【问题描述】:

如果File.SetAttributes("C:\\myFile.txt", FileAttributes.ReadOnly); 将文件设置为只读,如果需要,如何将其设置回读/写?

我怀疑它会是FileAttributes.Normal 但是这会改变文件的任何其他属性吗? MSDN 网站上没有非常详细的说明...

文件正常,没有设置其他属性。这个属性是 仅在单独使用时有效。

谢谢

【问题讨论】:

    标签: c# file-attributes


    【解决方案1】:

    要仅删除 ReadOnly 属性,您可以执行以下操作:

    File.SetAttributes("C:\\myfile.txt", File.GetAttributes("C:\\myfile.txt") & ~FileAttributes.ReadOnly);
    

    这将删除ReadOnly 属性,但保留文件中已存在的任何其他属性。

    【讨论】:

    • 我猜~ 反转了属性?
    • 差不多 - ~ 运算符返回给定值的按位补码。从语义上讲,上面所说的是,“将文件myfile.txt的属性设置为myfile.txt的属性ReadOnly属性除外。”
    • 如果您可以选择在文件上实例化 FileInfo 对象,那么您可以简单地设置其 IsReadOnly 属性。 msdn.microsoft.com/en-us/library/system.io.fileinfo.aspx
    • 如果你想让文件只读(或分配任何其他属性),你需要使用 |代替 &。例如:File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.ReadOnly);
    【解决方案2】:

    File.SetAttributes 替换文件上的所有属性。

    设置和删除属性的正确方法是首先获取属性,应用更改并设置它们。

    例如

    var attr = File.GetAttributes(path);
    
    // set read-only
    attr = attr | FileAttributes.ReadOnly;
    File.SetAttributes(path, attr);
    
    // unset read-only
    attr = attr & ~FileAttributes.ReadOnly;
    File.SetAttributes(path, attr);
    

    【讨论】:

      【解决方案3】:

      我知道这已经很晚了,但我想分享我的解决方案,希望它可以帮助其他人。我需要类似的东西,我完成的方法是在FileInfo 上设置IsReadOnly 属性。

          private void UnsetReadOnlyAttribute(string filePathWithName)
          {
              FileInfo fileInfo = new FileInfo(filePathWithName);
              if (fileInfo.IsReadOnly)
              {
                  fileInfo.IsReadOnly = false;
              }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-19
        • 2015-05-24
        相关资源
        最近更新 更多