28

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

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

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

谢谢

4

3 回答 3

51

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

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

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

于 2011-11-10T14:48:43.740 回答
18

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);
于 2011-11-10T14:50:36.627 回答
2

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

    private void UnsetReadOnlyAttribute(string filePathWithName)
    {
        FileInfo fileInfo = new FileInfo(filePathWithName);
        if (fileInfo.IsReadOnly)
        {
            fileInfo.IsReadOnly = false;
        }
    }
于 2018-07-19T20:56:53.153 回答