我正在尝试使用.txt创建StreamWriter文件。我希望能够读取文本文件,然后自动将该文件的内容写入新的.txt文件,并将其存储到具有相同文件名的应用程序根目录中。(希望这是有意义的。)
目前,我无法找到一个解决办法,使其所有的工作。请看我的密码。如有任何指导,将不胜感激。
private void button1_Click(object sender, EventArgs e)
{
//read in a .txt file// this all works fine
OpenFileDialog op = new OpenFileDialog();
if (op.ShowDialog() == DialogResult.OK)
richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText);
this.Text = op.FileName;
string filename = op.FileName;
// not working //
//create new .txt file contaning module notes
StreamWriter writer = new StreamWriter("..\\"op.FileName".txt" );
using (writer)
{
writer.Write(richTextBox1);
}
}发布于 2016-04-08 08:41:13
这有几个问题,首先:
StreamWriter writer = new StreamWriter("..\\"op.FileName".txt" );应:
string filename = Path.GetFilename(op.FileName);
StreamWriter writer = new StreamWriter(".\\Notes\\" + filename);另一个问题是:
using (writer)
{
writer.Write(richTextBox1);
}尝试:
using (writer)
{
writer.Write(richTextBox1.Text);
}基本上,您正在尝试编写一个RichTextBox实例,当然,它不会像它期望的string那样工作。
您可能还需要重新考虑这一点:
if (op.ShowDialog() == DialogResult.OK)
richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText);
this.Text = op.FileName;这里的if构造只考虑它之后的行,这会将下面的行放入危险的区域,就好像您取消了打开一样,它仍然会运行。
所以把这些都放在一起:
using (OpenFileDialog op = new OpenFileDialog())
{
op.Filter = "Text Files|*.txt"; // Nice to have a filter
if (op.ShowDialog() == DialogResult.OK)
{
richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText);
this.Text = op.FileName;
string filename = Path.GetFilename(op.FileName);
StreamWriter writer = new StreamWriter(".\\Notes\\" + filename);
using (writer)
{
writer.Write(richTextBox1.Text);
}
}
} // Clean up the OpenFileDialog instance这假设存在Notes目录。如果没有,你就必须创造它。它还假定该目录位于工作目录中,该目录通常是可执行文件正在运行的目录。
https://stackoverflow.com/questions/36495162
复制相似问题