使用 Streamwriter 的 C#:尽管使用 Flush(),最后一个 "buffer" 被追加两次
C# using Streamwriter: last "buffer" is appended twice though using Flush()
我阅读了很多关于使用 Streamwriter 的文章。至少我有一个几乎可行的解决方案——但在某些文件中,最后一行被附加了两次。
我尝试在编写结束时甚至在每个 if 语句之后插入 Flush(),但行为保持不变。也许有人知道答案并可以帮助我?
用例:我从另一个文件中提取信息并将它们保存在一个对象中(所有信息都正确存储 - 我对此进行了测试)。
之后我调用方法将存储在对象中的信息写入文件:
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
(我简化了文件以便理解)
您打开或创建文件,但看起来您希望每次都从一个空白文件开始。您所指的文本可能是之前 运行 遗留下来的。查看有关如何从空文件开始的问题
Remove all previous text before writing
我阅读了很多关于使用 Streamwriter 的文章。至少我有一个几乎可行的解决方案——但在某些文件中,最后一行被附加了两次。 我尝试在编写结束时甚至在每个 if 语句之后插入 Flush(),但行为保持不变。也许有人知道答案并可以帮助我?
用例:我从另一个文件中提取信息并将它们保存在一个对象中(所有信息都正确存储 - 我对此进行了测试)。 之后我调用方法将存储在对象中的信息写入文件:
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
(我简化了文件以便理解)
您打开或创建文件,但看起来您希望每次都从一个空白文件开始。您所指的文本可能是之前 运行 遗留下来的。查看有关如何从空文件开始的问题
Remove all previous text before writing