0

所以,我在表单的开头加载了一个文件。我在那个表单中有“保存按钮”。当我点击它时,我想用richtextbox.Savefile 方法覆盖文件。但我得到“访问路径..被拒绝”

我检查并得到了这个:

  1. 当前用户的权限全部被授予
  2. 调试文件夹有“只读”——试图删除,但他们总是回来

现在,我认为程序只有在我关闭表单时才释放资源(文件)

有什么方法可以强制这样做吗?(我认为文件仍然加载到 RAM 内存中)

还有一件事:我必须使用 SaveFile 和 LoadFile 方法。我正在使用 RTF 文件,并且我的代码采用这种方法做得最好的方式。

    public EditareArticol(string path,List<capitol>chapters,Object[,]lca)
    {
        this.richTextBoxEx1.LoadFile(path, RichTextBoxStreamType.RichText);
    }

    private void saveToolStripButton_Click(object sender, EventArgs e)
    {
        richTextBoxEx1.SaveFile("articles\\" + 
                                textBox1.Text + ".dat",
                                RichTextBoxStreamType.RichText);  
File.SetAttributes("articles\\" + textBox1.Text + ".dat", File.GetAttributes("articles\\" + textBox1.Text + ".dat") | FileAttributes.Hidden);        
    }

编辑:

我认为这与特定文件的句柄有关。
从 MSDN 文档:

在为 RichTextBox 创建句柄之前,LoadFile 方法不会打开文件。确保在调用 LoadFile 方法之前创建控件的句柄。

4

2 回答 2

0

问题已解决:程序不允许我覆盖文件,因为它们具有隐藏属性
一旦我删除了它,一切都开始正常工作。
谢谢您的帮助

于 2013-05-09T06:34:51.013 回答
0

我有同样的问题(第一次写入文件,然后加载,但第二次没有再次保存)。我的解决方案是使用 ReadAlltext 而不是 LoadFile。我知道这是一个老问题,但我花了很多时间寻找解决方案,但找不到我的问题的明确答案。我不懂技术,但它对我有用,也可能对其他人有用。

我的解决方案:

string path = "whatever...."

// TO SAVE / OVERWRITE :

 richTextBox1.SaveFile(path, RichTextBoxStreamType.PlainText);

// TO LOAD:

richTextBox1.Text= File.ReadAllText(path);

如果您对 ÁÉÕã 等特殊字母有疑问,您可以为加载方法指定 unicode 代码,例如:

richTextBox1.Text= File.ReadAllText(path, Encoding.UTF7);

有效选项为 UTF7、UTF8、ASCII、Default、UTF32、Unicode。

于 2020-08-18T23:23:55.027 回答