【问题标题】:Record only last data in a txt file仅在 txt 文件中记录最后的数据
【发布时间】:2021-10-08 22:44:08
【问题描述】:

我试图重现书中的一个代码示例,其中程序计算提供的数字的平方,在 cmd 中显示结果,并将结果记录在 txt.file 中。对于提供的数字 1、2、3、4,程序可以计算结果并在 cmd 中显示为:

1
4
9
16

但是,当它需要在txt文件中记录结果时,它只记录16。我不确定它是否覆盖了以前的数据或只记录最后一个平方数。我想提示一下这里出了什么问题以及如何修复它以便能够记录所有结果,就像在 cmd 中一样。

using System;
using System.IO;
using System.Collections.Generic;

namespace Chapter4Practice
{
    public interface ITransformer
    {
        int Transform(int x);
    }
    public class Util
    {
        public static void TransformAll(int[] values, ITransformer t)
        {
            for (int i = 0; i < values.Length; i++)
                values[i] = t.Transform(values[i]);
        }
    }

    public class Squarer : ITransformer 
    {
        public int Transform(int x) => x * x;
    }
    class Test
    {
        static void Main()
        {
            int[] values = { 1, 2, 3, 4 };
            Util.TransformAll(values, new Squarer());
                
            foreach (int i in values)
             {
                Console.WriteLine(i);
                WriteProgressToFile(i.ToString());
             } 
        }
        static void WriteProgressToFile(string i) => System.IO.File.WriteAllText("progress.txt", i.ToString()+ Environment.NewLine);
    }
}
 

【问题讨论】:

    标签: c#


    【解决方案1】:

    File.WriteAllText 方法创建一个新文件,并将内容写入文件。 如果存在,它将被覆盖。 尝试使用File.AppendAllText,它将指定的字符串附加到文件中,如果文件不存在则创建该文件。

    您的方法WriteProgressToFile 将如下所示:

    static void WriteProgressToFile(string i) => System.IO.File.AppendAllText("progress.txt", i.ToString()+ Environment.NewLine);
        }
    

    【讨论】:

    • 有意义。谢谢你的回答。
    • 如果有帮助,请将解决方案标记为正确。谢谢!
    猜你喜欢
    • 2016-09-16
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多