9

我正在使用 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();
    }
4

4 回答 4

12

你好你可以试试这个方法

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

……

于 2012-08-02T12:59:43.207 回答
10

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

例子:

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

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


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

于 2012-08-02T12:58:28.857 回答
5

将此用于只读文件:

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

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

于 2012-08-02T13:07:47.577 回答
1

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

// Hide and read-only in one line
File.SetAttributes(filePathFinal, FileAttributes.ReadOnly | FileAttributes.Hidden);
于 2018-11-29T22:05:06.900 回答