c#stream writer:如何在新行上写数字?

时间:2018-05-27 09:51:52

标签: c# streamwriter

我想制作流编写器功能,我可以多次写数字,并在程序结束时显示这些数字的总和。我怎么能编码这个东西?

public static void bought(float a)
    {
        StreamWriter SW = new StreamWriter(@"C:\Users\ETN\source\repos\Apple-store\Apple-store\buy.txt");
        SW.Write(a);
        SW.Close();

    }

1 个答案:

答案 0 :(得分:0)

您希望在代码中更改一些内容。 Speficially:

  • 您正在打开一个流编写器,编写一个值并将其关闭。除非您已经有要编写的值列表,否则通常会打开并关闭流编写器一次并多次调用它。
  • 如果要在写入值后添加新行,请使用WriteLine代替Write
  • 将数值写入文本文件时,它们将根据文化转换为文本。请注意,默认值是系统的文化。如果您从具有不同文化的其他计算机上读取该文件,则该文件可能不可读。因此,您应该始终提供特定的文化。为此,请检查Convert.ToString方法。
  • 您应该使用try中的finally方法将代码写入StreamWriter.Close() / finally块中的流编写器。否则,如果发生错误,不保证关闭您的文件。
  • 不建议将货币信息(例如价格或帐户余额)存储为float。请改用decimal,这是为此目的而优化的(与用于科学计算的float相反)。

此代码应该为您提供一个良好的开端。根据您的具体要求,您可以自行完成并将其组织成方法,课程等:

StreamWriter writer = new StreamWriter(@"C:\Users\ETN\source\repos\Apple-store\Apple-store\buy.txt");
try {
    while (true) {
        decimal price:
        //Your code that determines the price goes here
        string priceText = Convert.ToString(price, CultureInfo.InvariantCulture);
        writer.WriteLine(priceText);

        bool shouldContinue;
        //Your code that determines whether there are more values to be written goes here
        if (!shouldContinue) {
            break;
        }
    }
    writer.Flush();
}
finally {
    writer.Close();
}