追加后如何在控制台中编写文本?

时间:2019-07-03 13:27:42

标签: c# .net

在添加文本文件后,我希望控制台写入txt文件的新完整文本。但是,我刚刚添加的行未写在控制台中。我在做什么错了?

您可以在下面看到我的代码。

make-instance

最后,我希望读取文件中已经存在的文本和“此行是Visual Studio添加的”行。但是我得到的只是旧文本。

3 个答案:

答案 0 :(得分:2)

您应该像最初那样在添加文本后再次设置lines变量。

lines = File.ReadAllText(path);

为您带来以下成就:

using System;
using System.IO;

namespace FileExercise
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\Text.txt";    

            //Read all lines
            string lines = File.ReadAllText(path);

            Console.WriteLine(lines);

            //Add line to original document
            File.AppendAllLines(@path, new string[] { "" + "This line is added 
            by Visual Studio" });    

            lines = File.ReadAllText(path);

            //Read new lines
            Console.WriteLine(lines);

            Console.ReadKey();
        }
    }
}

答案 1 :(得分:1)

当您使用//Read all the text in the file string lines = File.ReadAllText(path); //Output the original text Console.Write(lines); //Add your new line lines += "This line is added by Visual Studio" + Environment.NewLine; //Write the now updated text to the file File.WriteAllText(path, lines); //Output the new text Console.Write(lines); 附加到文件时,文件将使用其他文本进行更新,但是StringBuilder中的值没有更改,它仍然具有文件之前的文本附加。

有几种方法可以做您想要的事情,这是一个示例:

{{2}}

如果您打算添加很多行,则可能需要考虑流式传输文件并以这种方式甚至使用File.ReadAllText来添加行。

修改

我应该提到为什么我不只是再次致电{{1}}。该策略可以工作,但是效率很低,因为它将要求再次读取文件的全部内容。根据文件的大小,这可能会花费大量时间。像上面的示例一样,修改内存中的数据更干净,更高效。

答案 2 :(得分:0)

将文本附加到文件之后,您需要再次读取文件。 “行”变量仍保留上一次读取文件以来的文本。

while True:
   cv2.imshow('image', next_frame())
   key = cv2.waitKeyEx()
   cv2.waitKeyEx(1)