使用 Streamwriter 的 C#:尽管使用 Flush() 将最后"buffer"追加两次



我读过很多关于使用Streamwriter的文章。至少我有一个几乎可以工作的解决方案——但是在一些文件中,最后一行被追加了两次。我试着在写作结束时插入Flush(),甚至在每个if语句之后,但行为保持不变。也许有人知道答案,可以帮助我?

用例:我从另一个文件中提取信息并将它们保存在一个对象中(所有信息都被正确存储了——我对此进行了测试)。之后,我调用该方法将存储在对象中的信息写入文件:

for (int i = 0; i < allCMs.Count; i++)
        {
            using (var stream = File.Open(allCMs[i].dir,   
            FileMode.OpenOrCreate, FileAccess.Write))
            {
                using (StreamWriter writer = new StreamWriter(stream))
                {
                    writer.WriteLine(version);
                    writer.WriteLine();
                    if (allCMs[i].name != null)
                    {
                        writer.WriteLine(addProject(allCMs[i].name));
                        writer.WriteLine();
                        writer.Flush();
                    }
                    if (allCMs[i].header != null)
                    {
                        writer.WriteLine(addHeader(allCMs[i].header));
                        writer.WriteLine();
                        writer.Flush();
                    }
                    if (allCMs[i].src != null)
                    {
                        writer.WriteLine(addSrc(allCMs[i].src));
                        writer.WriteLine();
                        writer.Flush();
                    }
               }
           }
       }

txt中的输出如下所示:

project: projectname
header: header
src: source
src: source

或者有时像这样:

project: projectname
header: header
src: source
: source

(为了便于理解,我简化了文件)

您打开或创建文件,而看起来您希望每次都以一个空白文件开始。您所引用的文本可以从以前的运行中留下。看看这个关于如何从一个空文件

开始的问题

在写

之前删除前面的所有文本

相关内容

  • 没有找到相关文章

最新更新