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

在C#2005中将输出写入文件,c#,C#,我在c#2005中创建了一个marksheet程序,它工作正常,它通过使用下面的代码获取输入并显示输出。现在,如果我想把这个程序的输出也复制到我的C或任何驱动器中的一个新文件中。我该怎么办?我试过IO.StreamWriter,但它不起作用 using(System.IO.TextWriter writer = System.IO.File.CreateText(@"C:\1.txt")) { Console.WriteLine("\t\tMarksheet - Prislogi

我在c#2005中创建了一个marksheet程序,它工作正常,它通过使用下面的代码获取输入并显示输出。现在,如果我想把这个程序的输出也复制到我的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();
使用(System.IO.TextWriter writer=System.IO.File.CreateText(@“C:\1.txt”))
{
Console.WriteLine(“\t\tMarksheet-Prislogix公立学校”);
Console.Write(“\n\n学生姓名:“+Name”);
控制台。写入(“\n类:“+cls”);
控制台。写入(“\n滚动编号:“+roll”);
Console.Write(“\n\n对象\t\t获得的标记\t\t总标记”);
控制台。写入(“\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”+sin+“\t\t75”);
控制台。写入(“\n数学\t\t”+mat+“\t\t100”);
Console.Write(“\n物理\t\t\t”+phy+“\t\t75”);
控制台。写入(“\n计算机\t\t”+comp+“\t\t100”);
Console.Write(“\n方法\t\t”+isl+”\t\t50”);
浮点数=化学+eng+urd+sin+mat+phy+comp+isl;
控制台。写入(“\n\n\t\t\t获得的总分:“+tot+”\tOut Of 625”);
浮点数;
per=(tot/625)*100;
控制台。写入(“\n\t\t\t百分比:“+per+”%”);
如果(每<49和每>40)
{
Console.Write(“\n\t\t\t失败!”);
}
如果(per=50)
{
Console.Write(“\n\t\t\t等级:C”);
}
如果(per=60)
{
Console.Write(“\n\t\t\t等级:B”);
}
如果(per=70)
{
Console.Write(“\n\t\t\t等级:A”);
}
如果(per=80)
{
Console.Write(“\n\t\t\t等级:A+”);
}
如果(per=90)
{
Console.Write(“\n\t\t\t等级:A-ONE”);
}
}
}
Console.ReadLine();
StreamWriter
可以工作。很遗憾你没有向我们展示你使用它的企图

创建
StreamWriter
以写入文件的最简单方法是使用。然后您应该能够使用
StreamWriter.Write
,方法与
Console.Write相同。不要忘记使用
使用
语句:

using (TextWriter writer = File.CreateText("..."))
{
    // Write stuff here
}
这样可以确保写入程序将在
语句末尾使用
进行处理,这将刷新并关闭文件

如果要同时写入控制台和文件,可能需要一个“tee”
TextWriter
,用于写入两个输出。。。或者,您可以在运行程序后查看文件

需要注意的是:在Windows中,正常的行尾是
\r\n
,而不仅仅是
\n
。如果问题只是所有的输出看起来像是在记事本的一行上,那可能就是问题所在。考虑使用<代码> RealdLe> <代码>代替<代码>写<代码>,在该行的末尾写出平台默认行终止符。

如果所有这些都失败了,请告诉我们哪里出了问题,而不是“它不工作”。StreamWriter确实工作。很遗憾你没有向我们展示你使用它的企图

创建
StreamWriter
以写入文件的最简单方法是使用。然后您应该能够使用
StreamWriter.Write
,方法与
Console.Write相同。不要忘记使用
使用
语句:

using (TextWriter writer = File.CreateText("..."))
{
    // Write stuff here
}
这样可以确保写入程序将在
语句末尾使用
进行处理,这将刷新并关闭文件

如果要同时写入控制台和文件,可能需要一个“tee”
TextWriter
,用于写入两个输出。。。或者,您可以在运行程序后查看文件

需要注意的是:在Windows中,正常的行尾是
\r\n
,而不仅仅是
\n
。如果问题只是所有的输出看起来像是在记事本的一行上,那可能就是问题所在。考虑使用<代码> RealdLe> <代码>代替<代码>写<代码>,在该行的末尾写出平台默认行终止符。


如果所有这些都失败了,请告诉我们问题出在哪里,而不是“它不工作”。

更改对Console的所有调用。写入,以便它们改为写入StringBuilder实例。打印完成后,您可以执行以下操作:

Console.Write(stringBuilder.ToString());
System.IO.File.WriteAllText("your path here", stringBuilder.ToString());

这可能是最简单的修复方法。它仍会将输出写入控制台,但也会写入所需的文件。

将所有调用更改为Console.write,以便它们改为写入StringBuilder实例。打印完成后,您可以执行以下操作:

Console.Write(stringBuilder.ToString());
System.IO.File.WriteAllText("your path here", stringBuilder.ToString());

这可能是最简单的修复方法。它仍会将输出写入控制台,但也会写入所需的文件。

可能重复您认为它不工作的意思是什么?有错误吗?您必须在编写器上调用
Close()
,或者将其放入一个using块中。您发布的代码有一个关闭
}
,没有打开
{
。您可以在您说您尝试使用
StreamWriter
的地方发布代码吗?您可能还需要调用
Flush()
…@El Ronnoco:如果他做得正确并且使用了
using
,则不会。可能重复您认为它不工作的意思吗?是否有错误?您必须在编写器上调用
Close()
,或者将其放入using块中。您拥有的代码