在添加文本文件后,我希望控制台写入txt文件的新完整文本。但是,我刚刚添加的行未写在控制台中。我在做什么错了?
您可以在下面看到我的代码。
make-instance
最后,我希望读取文件中已经存在的文本和“此行是Visual Studio添加的”行。但是我得到的只是旧文本。
答案 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)