我在c#2005中创建了一个标记表程序,它工作正常,它正在输入并使用下面的代码显示输出。现在,如果我想要将此程序的输出也复制到位于我的C或任何驱动器中的新文件中。我该怎么办?我尝试了IO.StreamWriter,但它无法正常工作。
using(System.IO.TextWriter writer = System.IO.File.CreateText(@"C:\1.txt"))
{
Console.WriteLine("\t\tMarksheet - Prislogix Public School");
Console.Write("\n\nStudent Name : " + name);
Console.Write("\nClass : " + cls);
Console.Write("\nRoll Number : " + roll);
Console.Write("\n\nSubject\t\tObtained Marks\t\tTotal Marks");
Console.Write("\n\nChemistry\t\t" + chem + "\t\t75");
Console.Write("\nEnglish\t\t\t" + eng + "\t\t100");
Console.Write("\nCalculus\t\t\t" + urd + "\t\t100");
Console.Write("\nDiscrete\t\t\t" + sin + "\t\t75");
Console.Write("\nMathematics\t\t" + mat + "\t\t100");
Console.Write("\nPhysics\t\t\t" + phy + "\t\t75");
Console.Write("\nComputer\t\t" + comp + "\t\t100");
Console.Write("\nMethods\t\t" + isl + "\t\t50");
float tot = chem + eng + urd + sin + mat + phy + comp + isl;
Console.Write("\n\n\t\t\tTotal Obtained Marks : " + tot + "\tOut Of 625");
float per;
per = (tot / 625) * 100;
Console.Write("\n\t\t\tPercentage : " + per + "%");
if (per < 49 && per > 40)
{
Console.Write("\n\t\t\tFAILED!");
}
if (per <= 59 && per >= 50)
{
Console.Write("\n\t\t\tGrade : C");
}
if (per <= 69 && per >= 60)
{
Console.Write("\n\t\t\tGrade : B");
}
if (per <= 79 && per >= 70)
{
Console.Write("\n\t\t\tGrade : A");
}
if (per <= 89 && per >= 80)
{
Console.Write("\n\t\t\tGrade : A+");
}
if (per <= 100 && per >= 90)
{
Console.Write("\n\t\t\tGrade : A-ONE");
}
}
}
Console.ReadLine();
答案 0 :(得分:2)
StreamWriter
工作。很遗憾你没有告诉我们你尝试使用它。
创建 StreamWriter
以写入文件的最简单方法是使用File.CreateText
。然后,您应该能够以与StreamWriter.Write
相同的方式使用Console.Write
。不要忘记使用using
声明:
using (TextWriter writer = File.CreateText("..."))
{
// Write stuff here
}
这确保编写器将被置于using
语句的末尾,该语句将刷新并关闭文件。
如果你想写两个控制台和文件,你可能想要一个“tee”TextWriter
写入两个输出......或者你可以看一下运行程序后的文件。
需要注意的一点是:在Windows中,法线结尾为\r\n
,而不仅仅是\n
。如果问题只是所有输出看起来像是在记事本中的一行,那可能就是问题所在。考虑使用WriteLine
而不是Write
,在行尾写出平台默认行终止符。
如果所有这些都失败了,请告诉我们更多细节出了什么问题而不是“它不起作用”。
答案 1 :(得分:1)
更改对Console.Write的所有调用,以便它们写入StringBuilder实例。打印完成后,您可以执行以下操作:
Console.Write(stringBuilder.ToString());
System.IO.File.WriteAllText("your path here", stringBuilder.ToString());
这可能是最容易解决的问题。它仍然会将输出写入控制台,但它也会写入您想要的文件。