我现在一直在寻找许多网站上的答案,但所有工作答案仅适用于richTextbox,而我正在使用普通文本框。我正在尝试将文本框的内容保存到选择的文件中,但由于某种原因文件没有保存,我不知道问题是什么。这是“保存”菜单项的代码:
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;
}
}
}
没有错误。
答案 0 :(得分:5)
您应该保存到SaveFileDialog
中选择的文件,由OpenFile()
检索。这个例子对我有用:
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");
}
在您的代码中,您让用户选择要保存的文件,然后忽略该文件并将其写入硬编码位置。您的应用可能没有权限执行此操作,但它应该有权写入用户选择的位置。
答案 1 :(得分:0)
使用try { } catch (Exception ex) { }
阻止How to: Use the Try/Catch Block to Catch Exceptions
答案 2 :(得分:0)
我认为它的访问被拒绝了问题..尝试使用'D'驱动器...
这是一个有效的例子...... WriteAllText
在文件已存在且文件已存在的情况下有效,然后使用AppendAllText
using System;
using System.IO;
using System.Text;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
// This text is added only once to the file.
if (!File.Exists(path))
{
// Create a file to write to.
string createText = "Hello and Welcome" + Environment.NewLine;
File.WriteAllText(path, createText);
}
// This text is always added, making the file longer over time
// if it is not deleted.
string appendText = "This is extra text" + Environment.NewLine;
File.AppendAllText(path, appendText);
// Open the file to read from.
string readText = File.ReadAllText(path);
Console.WriteLine(readText);
}
}
答案 3 :(得分:0)
首先,保存文件与文本来源,富文本框或普通文本框无关。
正如Brian S.在评论中所说,可能有一个例外,因为你写的是C盘。您应该使用相对路径:"./MyTest.txt"