我正在尝试将字符串写入用户使用SaveFileDialog
组件指定的文件。
如果输出文件尚不存在,则会成功创建并填充该文件。但是,如果文件确实存在,并且具有文件扩展名,则会生成System.UnauthorisedAccessException
,说明Access to the path 'C:\Users\mmark\Desktop\Output.txt' is denied
。
我已经测试了输出文件与.csv和.txt文件扩展名,并没有文件扩展名,它只更新了一个文件成功,如果它没有一个文件扩展名。
我试过:
- 使用
StreamWriter.Write
输出文件。 - 使用
FileStream.Write
输出文件。 - 使用
File.WriteAllText
输出文件。 - 在再次尝试上述任何方法之前,请将文件属性设置为normal以删除只读。
下面是我用来将字符串写入文件的代码,注解掉了其他一些尝试,以显示我试图做的事情。如有任何协助,将不胜感激:
private void SaveFileBtn_Click(object sender, EventArgs e)
{
SaveFileDialog dialog = new SaveFileDialog();
if (dialog.ShowDialog() == DialogResult.OK) {
try {
//if(File.Exists(dialog.FileName)) {
// File.SetAttributes(dialog.FileName, FileAttributes.Normal);
//}
File.WriteAllText(dialog.FileName, richTextBox1.Text);
//using (StreamWriter writer = new StreamWriter(dialog.FileName)) {
// writer.Write(richTextBox1.Text);
//}
//using (FileStream fs = File.Create(dialog.FileName)) {
// byte[] info = new UTF8Encoding(true).GetBytes(richTextBox1.Text);
// fs.Write(info, 0, info.Length);
//}
MessageBox.Show("File Created!");
} catch(Exception err) {
MessageBox.Show("File Creation Error: " + err);
}
}
}
字符集
1条答案
按热度按时间olhwl3o21#
在此特定场景中,问题是由
C:\Users\mmark
目录上的访问权限引起的,通过将文件保存到C:\Users\mmark
目录之外的其他文件夹解决了该问题。虽然在这种情况下没有发生,但问题的一个可能原因也可能是该文件先前在应用程序中或由另一个应用程序打开,并且在尝试保存时仍然打开。