首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StreamWriter不写

StreamWriter不写
EN

Stack Overflow用户
提问于 2016-04-08 08:39:37
回答 1查看 159关注 0票数 1

我正在尝试使用.txt创建StreamWriter文件。我希望能够读取文本文件,然后自动将该文件的内容写入新的.txt文件,并将其存储到具有相同文件名的应用程序根目录中。(希望这是有意义的。)

目前,我无法找到一个解决办法,使其所有的工作。请看我的密码。如有任何指导,将不胜感激。

代码语言:javascript
复制
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);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-08 08:41:13

这有几个问题,首先:

代码语言:javascript
复制
StreamWriter writer = new StreamWriter("..\\"op.FileName".txt" );

应:

代码语言:javascript
复制
string filename = Path.GetFilename(op.FileName);
StreamWriter writer = new StreamWriter(".\\Notes\\" + filename);

另一个问题是:

代码语言:javascript
复制
using (writer)
{
    writer.Write(richTextBox1);
}

尝试:

代码语言:javascript
复制
using (writer)
{
    writer.Write(richTextBox1.Text);
}

基本上,您正在尝试编写一个RichTextBox实例,当然,它不会像它期望的string那样工作。

您可能还需要重新考虑这一点:

代码语言:javascript
复制
if (op.ShowDialog() == DialogResult.OK) 
richTextBox1.LoadFile(op.FileName, RichTextBoxStreamType.PlainText);
this.Text = op.FileName;

这里的if构造只考虑它之后的行,这会将下面的行放入危险的区域,就好像您取消了打开一样,它仍然会运行。

所以把这些都放在一起:

代码语言:javascript
复制
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目录。如果没有,你就必须创造它。它还假定该目录位于工作目录中,该目录通常是可执行文件正在运行的目录。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36495162

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档