C# 使文件在c中可写的最佳方法#

C# 使文件在c中可写的最佳方法#,c#,.net,file,file-attributes,C#,.net,File,File Attributes,我试图设置一个标志,当您在文件上右键单击\Properties时,该标志会导致出现只读复选框 谢谢 C#: 两种方式: System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); fileInfo.IsReadOnly = true/false; 或 FileInfo上的IsReadOnly属性基本上执行第二种方法中必须手动执行的位翻转。到设置只读标志,实际上使文件不可写: File.SetAttributes(filePat

我试图设置一个标志,当您在文件上
右键单击\Properties
时,该标志会导致出现
只读
复选框

谢谢

C#:

两种方式:

System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
fileInfo.IsReadOnly = true/false;


FileInfo
上的
IsReadOnly
属性基本上执行第二种方法中必须手动执行的位翻转。

设置只读标志,实际上使文件不可写:

File.SetAttributes(filePath,
    File.GetAttributes(filePath) | FileAttributes.ReadOnly);
File.SetAttributes(filePath,
    File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
要删除只读标志,实际上使文件可写,请执行以下操作:

File.SetAttributes(filePath,
    File.GetAttributes(filePath) | FileAttributes.ReadOnly);
File.SetAttributes(filePath,
    File.GetAttributes(filePath) & ~FileAttributes.ReadOnly);
要切换只读标志,使其与当前的内容相反,请执行以下操作:

File.SetAttributes(filePath,
    File.GetAttributes(filePath) ^ FileAttributes.ReadOnly);
这基本上是有效的位掩码。设置特定位以设置只读标志,清除该位以删除该标志


请注意,上述代码不会更改文件的任何其他属性。换句话说,如果文件在执行上述代码之前被隐藏,那么之后它也将保持隐藏状态。如果您只需将文件属性设置为
.Normal
.ReadOnly
,您可能会在这个过程中丢失其他标志。

令人惊讶的是,您可以在这里快速找到答案。我喜欢这个网站!我不知道你可以用第一种方法。令人惊叹的!请注意,这将有效地同时清除同一文件上的其他标志。隐藏文件将变为可见,系统文件将变为非系统文件,等等@Lasse如果有人不了解位标志如何工作,第二种方法将变为可见。谢天谢地,您已经解释过了。第一个方法缩短为
newfileinfo(filePath){IsReadOnly=false},很整洁!您是否试图使文件按问题为只读,或按问题标题为可写(而非只读)?在基于Win2k的操作系统上,这是一个复杂的问题。您可以为文件提供只读属性,还可以通过“权限”选项卡授予写入权限。前者只是一个建议,后者实际上是由操作系统强制执行的。@Armentage我认为没有那么复杂。文件标志和NTFS权限集之间有着明显的区别,这个问题显然涉及第一种情况。