如何制作“只读”文件?

Posted

技术标签:

【中文标题】如何制作“只读”文件?【英文标题】:How to make a "Read only" file? 【发布时间】:2012-07-31 10:50:20 【问题描述】:

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

    如何将文件设为只读,这样任何人都无法删除或写入文件? 如何制作隐藏文件?

我正在像这样创建文件:

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

【问题讨论】:

你可以看那个帖子:***.com/a/5398398/1252575这里还有一个:***.com/questions/7590446/… @peer 我不接受你的编辑因为你修改了我的代码并删除了我的一个问题。 @Nickon 用户同行编辑了我的问题,它还有第二部分。 啊,好吧;)不知道。如果你想正常隐藏你的文件,使用这个:***.com/questions/1199571/how-to-hide-file-in-c 但是当你想让它在你的文件系统中不可见时,尝试 PInvoke:pinvoke.net/default.aspx/kernel32.setfileattributessocial.msdn.microsoft.com/Forums/en/csharpgeneral/thread/… 在你的文件系统中不可见我理解隐藏在 SystemVolumeInformation 文件夹中跨度> 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

你好,你可以试试这个方法

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

......

【讨论】:

Yakoub 你能检查我问题的第二部分吗?请有人编辑并删除了第二部分,所以我重新编辑了。谢谢。顺便说一句,我投了你们所有人的票。 谢谢谦虚,我添加了第二个答案 谢谢我只是缩进你的第一个答案的代码,以便其他人也可以阅读。谢谢。我接受了你的回答。 我很高兴回答你谦虚,我很抱歉缩进【参考方案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);

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

【讨论】:

Rodrio 你能检查我问题的第二部分吗?请有人编辑并删除了第二部分,所以我重新编辑了。谢谢。顺便说一句,我投了你们所有人的票。 非常感谢,我认为你所有的答案都有效,我投票给你,但我已经接受了 Aghilas Yakoub 的答案,所以不要误解我。我真的很感谢你们。【参考方案4】:

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

例子:

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

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


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

Setting NTFS permissions in C#.NET

【讨论】:

我将如何使用它并制作它?是否可以显示在我的代码上? 是的,谢谢 Heinzi。在你编辑你的答案之前,我回复了你。 我的问题被同行编辑了,他删除了我的问题的第二部分,所以我重新编辑了你对第二个问题有发言权吗?谢谢。 File.SetAttributes 方法msdn.microsoft.com/en-us/library/…

以上是关于如何制作“只读”文件?的主要内容,如果未能解决你的问题,请参考以下文章

说出挂载光盘U盘的基本方法,以及在linux中如何制作ISO镜像文件

云原生使用Dockerfile制作openGauss镜像

如何在Jboss teiid中配置只读数据源

如何使用 jQuery 提交带有部分只读输入的表单?

Docker镜像制作常用官方基础系统镜像的选择

如何制作EXE文件图标