如何制作“只读”文件?

时间:2012-08-02 12:57:29

标签: c# file file-permissions streamwriter

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

  1. 如何将文件设为只读文件,以便没有人可以删除或写入文件?
  2. 如何制作隐藏文件?
  3. 我正在创建这样的文件:

        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();
        }
    

4 个答案:

答案 0 :(得分:10)

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

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);

...

答案 1 :(得分:5)

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

示例:

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

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


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

答案 2 :(得分:3)

将此用作只读文件:

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);

我知道您没有要求设置普通文件,但我认为知道这一点很有用。

答案 3 :(得分:0)

相同的答案,但只有一行代码:

// Hide and read-only in one line
File.SetAttributes(filePathFinal, FileAttributes.ReadOnly | FileAttributes.Hidden);