C# 无法保存文本文件,但没有错误(C)
我现在在很多网站上寻找答案,但是所有的有效答案都只适用于richTextbox,我使用的是普通的textbox。我试图将文本框的内容保存到所选的文件中,但由于某些原因,该文件无法保存,我不知道问题出在哪里。这是“保存”菜单项的代码:C# 无法保存文本文件,但没有错误(C),c#,io,save,writealltext,C#,Io,Save,Writealltext,我现在在很多网站上寻找答案,但是所有的有效答案都只适用于richTextbox,我使用的是普通的textbox。我试图将文本框的内容保存到所选的文件中,但由于某些原因,该文件无法保存,我不知道问题出在哪里。这是“保存”菜单项的代码: private void saveToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog ofd = new SaveFileDialog();
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
SaveFileDialog ofd = new SaveFileDialog();
ofd.Title = "Save";
ofd.Filter = "Txt Documents (.txt)|*.txt|All files (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
try
{
//I don't know what to make of this, because clearly this doesn't work
File.WriteAllText(@"./TestFile.txt", MainTextbox.Text);
}
catch (Exception ex)
{
MainTextbox.Text += ex;
}
}
}
没有错误。使用try{}catch异常ex{}块我认为其访问被拒绝的问题。。尝试使用“D”驱动 这是一个有效的例子。WriteAllText在文件已经存在时工作,如果文件已经存在,则使用AppendAllText
首先,保存文件与文本的来源、富文本框或普通文本框无关
正如Brian S.在一篇评论中所说,很可能存在异常,因为您正在向C驱动器写入数据。您应该使用相对路径:./MyTest.txt您应该保存到由OpenFile检索的SaveFileDialog中选择的文件中。这个例子对我很有用:
SaveFileDialog ofd = new SaveFileDialog();
ofd.Title = "Save";
ofd.Filter = "Txt Documents (.txt)|*.txt|All files (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
using (var fileStream = ofd.OpenFile())
using (var sw = new StreamWriter(fileStream))
sw.WriteLine("Some text");
}
在代码中,允许用户选择要保存到的文件,然后忽略该文件并将其写入硬编码位置。您的应用可能没有权限执行此操作,但它应该有权限写入用户选择的位置。您不应该保存到SaveFileDialog中选择的文件吗?@TimS。当然,按照目前的设置方式,它确实违背了目标。我认为你的建议是一个答案。你确定没有例外吗?也许它被链条上的某个地方吞没了?您正试图在C:\驱动器的根目录下创建一个文件,因此这是非常可能的,除非您采取了其他步骤,但您没有在那里创建文件的权限。我的假设是,您正在使用硬编码文件名来测试是否可以创建文件,否则,上面Tim S的注释可能就是解决方案。请尝试使用“D”驱动器路径。。您可能因为“C”驱动器而面临访问被拒绝的问题。这解决了我的问题。非常感谢你!
SaveFileDialog ofd = new SaveFileDialog();
ofd.Title = "Save";
ofd.Filter = "Txt Documents (.txt)|*.txt|All files (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
using (var fileStream = ofd.OpenFile())
using (var sw = new StreamWriter(fileStream))
sw.WriteLine("Some text");
}