在C#2005中将输出写入文件

时间:2011-05-06 10:11:58

标签: c#

我在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();

2 个答案:

答案 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());

这可能是最容易解决的问题。它仍然会将输出写入控制台,但它也会写入您想要的文件。