如何输出程序打印到文件的所有内容?

时间:2014-04-07 19:34:07

标签: c# output

事实是,我已经制作了一个代码来生成巨大的金字塔。现在我想将控制台中写入的所有内容输入到文本文件中。 感谢。

我目前的代码。

using System;

namespace Pyramidi
{
class Ohjelma
{
    static void Main()
    {
        int maxHeight = 0;
        do
        {

            Console.Write("Anna korkeus: ");
            maxHeight = Convert.ToInt32(Console.ReadLine());
            if (maxHeight > 0)
            {
                break;
            }
            else
            {
                continue;
            }
        }
        while (true);

        for (int height = 0; height < maxHeight; height++)
        {
            for (int i = 0; i < (maxHeight - height - 1); i++)
            {
                Console.Write(" ");
            }
            for (int i = 1; i <= (height * 2 + 1); i++)
            {
                Console.Write("*");
            }
            Console.WriteLine();
        }
        Console.ReadLine();
    }
}

}

4 个答案:

答案 0 :(得分:4)

最容易做的事情是,根本不需要更改程序,是在运行程序时将程序的输出重定向到文件:

MyProject.exe > file.txt

“&gt;” 中是一个“重定向操作符”,就像许多Unix shell中一样。

如果您使用的是Windows,则可以阅读有关输出重定向运算符和其他此类运算符here的更多信息。如果您使用的是Unix shell,请使用shell的重定向运算符(例如here's the Bash manual's advice)。

答案 1 :(得分:3)

John的答案是最快和最简单的,但StreamWriter也是一个解决方案。当您需要写入文件时,这将经常使用。

我建议阅读StreamWriter。这允许您输出到文件。

您只需要添加一个StreamWriter对象,并将Stream.WriteLines替换为StreamWriter变量名。

using (StreamWriter sw = new StreamWriter("fileName.txt"))
{
    for (int height = 0; height < maxHeight; height++)
    {                   
        for (int i = 0; i < (maxHeight - height - 1); i++)
        {
            sw.Write(" ");
        }
        for (int i = 1; i <= (height * 2 + 1); i++)
        {
            sw.Write("*");
        }
        sw.WriteLine();
    }
    sw.Flush();
}

答案 2 :(得分:1)

以下是使用Console.SetOut方法的另一种解决方案:

using (var writer = new StreamWriter("filepath"))
{
   Console.SetOut(writer);
   do
   {
       Console.Write("Anna korkeus: ");
       maxHeight = Convert.ToInt32(Console.ReadLine());

       if (maxHeight > 0)  break;
       else continue;
  }
  while (true);

  for (int height = 0; height < maxHeight; height++)
  {
       for (int i = 0; i < (maxHeight - height - 1); i++)
       {
           Console.Write(" ");
       }
       for (int i = 1; i <= (height * 2 + 1); i++)
       {
            Console.Write("*");
       }
       Console.WriteLine();
  }
  writer.Flush();
}

Console.SetOut更改Console的输出流。因此,当您使用Console.Write时,它会写入该流而不是Console。然后您调用Flush } method,它写入底层流中的所有数据并清除缓冲区。

答案 3 :(得分:-1)

不使用写入控制台,而是使用IO

直接写入文件
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        string path = @"c:\temp\MyTest.txt";
        if (!File.Exists(path))
        {
            // Create a file to write to. 
            using (StreamWriter sw = File.CreateText(path))
            {
                sw.WriteLine("Hello");
                sw.WriteLine("And");
                sw.WriteLine("Welcome");
            }
        }

        // Open the file to read from. 
        using (StreamReader sr = File.OpenText(path))
        {
            string s = "";
            while ((s = sr.ReadLine()) != null)
            {
                Console.WriteLine(s);
            }
        }
    }
}

有关详细信息,请访问此http://msdn.microsoft.com/en-us/library/system.io.file.aspx