遇到C#WPF文件保存异常
我的问题是,我一直看到一个重复出现的主题,试图让我的记事本克隆保存一个文件。每当我尝试保存文件时,无论硬盘上的位置如何,都会继续引发UnauthorizedAccess异常。下面是我所做工作的示例代码,从昨晚开始我一直在尝试研究,但都没有结果。任何帮助都将不胜感激遇到C#WPF文件保存异常,c#,wpf,C#,Wpf,我的问题是,我一直看到一个重复出现的主题,试图让我的记事本克隆保存一个文件。每当我尝试保存文件时,无论硬盘上的位置如何,都会继续引发UnauthorizedAccess异常。下面是我所做工作的示例代码,从昨晚开始我一直在尝试研究,但都没有结果。任何帮助都将不胜感激 //located at base class level private const string fileFilter = "Text Files|*.txt|All Files|*.*"; private string cur
//located at base class level
private const string fileFilter = "Text Files|*.txt|All Files|*.*";
private string currentPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
private void MenuFileSaveAs_Click(object sender, RoutedEventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.DefaultExt = "*.txt";
sfd.Filter = fileFilter;
sfd.AddExtension = true;
sfd.InitialDirectory = currentPath;
sfd.RestoreDirectory = true;
sfd.OverwritePrompt = true;
sfd.ShowDialog();
try
{
System.IO.File.WriteAllText(currentPath,TxtBox.Text,Encoding.UTF8);
}
catch (ArgumentException)
{
// Do nothing
}
catch(UnauthorizedAccessException)
{
MessageBox.Show("Access Denied");
}
}
用户点击“确定”后,需要从对话框中获取正确的路径上下文和文件对象。即验证用户是否实际点击了ok,然后使用OpenFile属性查看其文件选择:
if (sfd.ShowDialog.HasValue && sfd.ShowDialog)
{
if (sfd.OpenFile() != null)
{
// convert your text to byte and .write()
sfd.OpenFile.Close();
}
}
更改以下行
...
if (sfd.ShowDialog() != true)
return;
try
{
using (var stream = sfd.OpenFile())
using (var writer = new StreamWriter(stream, Encoding.UTF8))
{
writer.Write(TxtBox.Text);
}
}
...
我希望它能帮助您。未经授权的访问例外的完整消息是什么?请发布完整的异常消息。mscorlib.dll中发生类型为“System.UnauthorizedAccessException”的未经处理的异常。其他信息:对路径“C:\Users\Kohou\000\Documents”的访问被拒绝。MessageBox显示“拒绝访问”
Environment.GetFolderPath
返回文件夹的路径。System.IO.File.WriteAllText
的第一个参数必须是文件的路径,而不是文件夹。嗯。。。我想我可能有一个想法与此相关。这实际上纠正了这个问题。非常感谢您的精彩回复!因此,从代码角度来看,您必须将文本框的输入转换为字节流,以便适当地保存。