如何制作“只读”文件?

我正在使用C# StreamWritier类。 问题:

  1. 如何将文件设置为只读,以便没有人可以删除或写入文件?
  2. 如何制作隐藏文件?

我正在创建这样的文件:

  private void button1_Click(object sender, EventArgs e) { SaveFileDialog save = new SaveFileDialog(); save.FileName = textBox1.Text; save.Filter = "Text File | *.rtf"; if (save.ShowDialog() == DialogResult.OK) { StreamWriter writer = new StreamWriter(save.OpenFile()); writer.WriteLine(textBox2.Text); } writer.Dispose(); writer.Close(); } 

您好,您可以尝试使用此方法

1

  public static void SetFileReadAccess(string FileName, bool SetReadOnly) { FileInfo fInfo = new FileInfo(FileName); // Set the IsReadOnly property. fInfo.IsReadOnly = SetReadOnly; } 

2

 File.SetAttributes(yourFilePath, FileAttributes.Hidden); 

……

您可以使用File.SetAttributes设置ReadOnly属性。

例:

 File.SetAttributes(textBox1.Text, FileAttributes.ReadOnly); 

请注意,这仅设置readonly标志,它不会修改NTFS访问控制列表(这意味着每个熟练的用户都可以删除只读属性)。 另请注意,这会重置文件的所有其他属性,这在您的情况下应该不是问题,因为您无论如何都要创建新文件。 如果需要保留现有属性, File.GetAttributes首先使用File.GetAttributes并将现有标志与新标志合并(请参阅链接的MSDN页面上的示例)。


如果您需要保护文件免受恶意写入操作,您必须了解NTFS安全性(谷歌为“NTFS安全”提供大量资源)。 一旦你理解了这一点,下面的问题将告诉你如何在C#中修改它们:

  • 在C#.NET中设置NTFS权限

将其用于只读文件:

 FileAttributes yourFile = File.GetAttributes(yourFilePath); File.SetAttributes(yourFilePath, FileAttributes.ReadOnly); 

“yourFilePath”是一个字符串。

对于隐藏文件:

 FileAttributes yourFile = File.GetAttributes(yourFilePath); File.SetAttributes(yourFilePath, FileAttributes.Hidden); 

对于普通文件(不是只读,也不是隐藏):

 FileAttributes yourFile = File.GetAttributes(yourFilePath); File.SetAttributes(yourFilePath, FileAttributes.Normal); 

我知道你没有要求设置一个普通文件,但我认为知道这个是有用的。