我正在尝试使用.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);
}
}
答案 0 :(得分:10)
这有几个问题,首先是:
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
目录存在。如果不是,你必须创建它。它还假定该目录位于工作目录中,该目录通常是运行可执行文件的目录。