C# 如何在以“开始”的行中添加文本;“你好”;归档

C# 如何在以“开始”的行中添加文本;“你好”;归档,c#,file-io,stream,C#,File Io,Stream,我有一个包含许多行的文件。这里有一条线如下所示: hello jim jack nina richi sam 我需要在这行中添加一个特定的文本鲑鱼< /代码>,并将其改为下面(它可以添加在这一行的任何地方-结束-开始-中间没有关系): 我试过: string path = @"C:\testFolder\newTestLog.txt"; StreamReader myReader = new StreamReader(path); string[] al

我有一个包含许多行的文件。这里有一条线如下所示:

hello jim jack nina richi sam
我需要在这行中添加一个特定的文本<代码>鲑鱼< /代码>,并将其改为下面(它可以添加在这一行的任何地方-结束-开始-中间没有关系):

我试过:

    string path = @"C:\testFolder\newTestLog.txt";
        StreamReader myReader = new StreamReader(path);
        string[] allLines = File.ReadAllLines(path);
            foreach (string element in allLines) {
            if (element.StartsWith("hello"))
            {
                Console.WriteLine(element);
            }
        }
        myReader.Close();

    }
使用此功能,我可以逐行读取文件,并将每一行添加到数组中,如果以“hello”开头,则打印该行,但我不确定如何将文本添加到此行,请尝试以下操作:

string path = @"C:\testFolder\newTestLog.txt";
var lines = File.ReadLines(path).Select(l => l + l.StartsWith("hello")?" salmon":"");
foreach (string line in lines)
    Console.WriteLine(line);
请注意,这仍然只是将结果写入控制台,就像您的示例所做的那样。现在还不清楚您真正希望输出发生什么

如果你想把它保存到原始文件中,你已经打开了一小罐蠕虫。将文件中的所有数据都视为存储在一个相邻的块1中。如果将文本附加到文件中的任何一行,则该文本无处可去,只能覆盖下一行的开头。实际上,如果您需要修改文件,这通常意味着要么写出一个完整的新文件,然后在完成后删除/重命名,要么将整个文件保存在内存中并从头到尾写入

使用第二种方法,我们将所有内容都保存在内存中,您可以这样做:

string path = @"C:\testFolder\newTestLog.txt";
var lines = File.ReadAllLines(path).Select(l => l + l.StartsWith("hello")?" salmon":"");
File.WriteAllLines(path, lines);


1事实上,一个文件在磁盘上可能被分割成几个片段,但即使如此,每个片段都作为一个整体的一部分呈现给您的程序。

您应该使用Joel回答的方法,这样更好,但如果您在实现它时遇到困难,请尝试此方法。将
salmon
添加到以
hello
开头的行后,可以使用
file.writeAllines来覆盖txt文件

string filePath = @"C:\testFolder\newTestLog.txt";

string[] allLines = File.ReadAllLines(filePath);

for(int i = 0; i < allLines.Length; i++)
{
    if (allLines[i].StartsWith("hello"))
    {
        allLines[i] += " salmon";
    }
}

File.WriteAllLines(filePath, allLines);
stringfilepath=@“C:\testFolder\newTestLog.txt”;
字符串[]allLines=File.ReadAllLines(文件路径);
for(int i=0;i
是否要用新行覆盖txt文件?您好,我只想将我的文本添加到该行,就这样!是否需要将此文件保存到文件中?或者只是显示在控制台上?只是为了保存在文件中,在foreach语句的“l+l.StartsWith”(“hello”)和“lines”下,它给了我错误(红线)!红线表示基本的sytnax错误(它甚至不会编译),而不是程序执行期间的问题。您应该能够告诉我们语法错误是什么,老实说,即使是一年级的学生也应该能够自己修复语法错误,至少能够编译它。如果你不能做到这一点,你就很难从事编程工作。谢谢CNuts:-)它很有魅力,我认为对我来说更有意义,非常感谢
string filePath = @"C:\testFolder\newTestLog.txt";

string[] allLines = File.ReadAllLines(filePath);

for(int i = 0; i < allLines.Length; i++)
{
    if (allLines[i].StartsWith("hello"))
    {
        allLines[i] += " salmon";
    }
}

File.WriteAllLines(filePath, allLines);