所以,我在表单的开头加载一个文件。我在该表单中有“保存按钮”。当我单击它时,我想用richtextbox.Savefile方法覆盖该文件。但我得到“访问路径..被拒绝”
我检查了一下:
现在,我认为只有在我关闭表单
时,程序才会释放资源(文件)有什么方法可以强迫这个吗? (我认为文件仍然加载到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方法之前创建了控件的句柄。
答案 0 :(得分:0)
问题已解决:
该程序没有让我覆盖文件,因为他们有HIDDEN属性
一旦我删除了它,所有开始工作都很好。
谢谢你的帮助
答案 1 :(得分: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,默认,UTF32,Unicode。