【发布时间】:2018-04-17 18:19:28
【问题描述】:
我正在开发一个写入 .txt 文件的简单控制台应用程序。我几乎没有将附加设置为 false 的 Streamwriter:
StreamWriter j1 = new StreamWriter(@"jmeno1.txt", false);
StreamWriter j2 = new StreamWriter(@"jmeno2.txt", false);
StreamWriter s1 = new StreamWriter(@"skore1.txt", false);
StreamWriter s2 = new StreamWriter(@"skore2.txt", false);
StreamWriter l1 = new StreamWriter(@"legy1.txt", false);
StreamWriter l2 = new StreamWriter(@"legy2.txt", false);
首先我写下默认值:
string jmeno1;
string jmeno2;
int legy1 = 0;
int legy2 = 0;
int skore1 = 501;
int skore2 = 501;
Console.WriteLine("První jméno?");
jmeno1 = Console.ReadLine();
Console.WriteLine("Druhé jméno?");
jmeno2 = Console.ReadLine();
j1.WriteLine(jmeno1);
j2.WriteLine(jmeno2);
s1.WriteLine(skore1.ToString());
s2.WriteLine(skore2.ToString());
l1.WriteLine(legy1.ToString());
l2.WriteLine(legy2.ToString());
j1.Flush();
j2.Flush();
s1.Flush();
s2.Flush();
l1.Flush();
l2.Flush();
然后在一些用户输入后,我想用新字符串覆盖这些文件(使用与默认字符串相同的方式)。但是文件没有被覆盖,文本只是被附加。我觉得这很奇怪,因为附加设置为假。我以前从未经历过。
这是写入文件发生的代码部分(对不起外语):
Console.WriteLine("\n" + jmeno1 + " hodil/a?");
skore1 = skore1 - int.Parse(Console.ReadLine());
if (skore1 == 0)
{
legy1++;
// writing to file
l1.WriteLine(legy1.ToString());
l1.Flush();
Console.WriteLine("\n" + jmeno1 + " zavřel/a!");
skore1 = 501;
skore2 = 501;
// writing to file
s1.WriteLine(skore1.ToString());
s2.WriteLine(skore2.ToString());
s1.Flush();
s2.Flush();
zacina = 2;
}
else
{
// writing to file
s1.WriteLine(skore1.ToString());
s1.Flush();
Console.WriteLine("\n" + jmeno2 + " hodil/a?");
skore2 = skore2 - int.Parse(Console.ReadLine());
if (skore2 == 0)
{
legy2++;
// writing to file
l2.WriteLine(legy2.ToString());
l2.Flush();
Console.WriteLine("\n" + jmeno2 + " zavřel/a!");
skore1 = 501;
skore2 = 501;
// writing to file
s1.WriteLine(skore1.ToString());
s2.WriteLine(skore2.ToString());
s1.Flush();
s2.Flush();
zacina = 2;
}
else
{
// writing to file
s2.WriteLine(skore2.ToString());
s2.Flush();
}
}
带有分数的文件看起来像this。
感谢您的帮助。
【问题讨论】:
-
请提供minimal reproducible example - 最好只提供一个文件。我强烈怀疑你是误诊或误解;它真的不会附加该代码。
-
您的意思是在关闭 StreamWriters 之前您看到它们附加?我很高兴他们这样做,因为否则不可能在一个文件中写入多行。您是否尝试过在写入默认值后关闭它们并在您想要覆盖它们时重新打开它们?
-
是的,就是这样!我忘了关闭它们。非常感谢!
标签: c# append streamwriter