Как сделать файл" только для чтения"?

Я использую 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();
    }

3 ответов


привет, вы можете попробовать этот метод

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

......


вы можете установить атрибут ReadOnly с помощью File.SetAttributes.

пример:

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

обратите внимание, что это только устанавливает флаг readonly, он не изменяет списки управления доступом NTFS (это означает, что каждый опытный пользователь может удалить атрибут только для чтения). Обратите внимание, что это сбрасывает все остальные атрибуты файла, что не должно быть проблемой в вашем случае, так как вы все равно создаете новый файл. Если необходимо сохранить существующие атрибуты, используйте File.GetAttributes сначала объедините существующие флаги с новым (см. пример на связанной странице MSDN).


Если вам нужно безопасное файл против вредоносных попыток записи, вы должны понять безопасность NTFS (google для "безопасности NTFS" для большого количества ресурсов). Как только вы это поймете, следующий вопрос расскажет вам, как изменить их в C#:


используйте это для файла только для чтения:

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

Я знаю, что вы не просили установить обычный файл, но я думаю, что это полезно знать.