C# 编辑文本文件中的单行

C# 编辑文本文件中的单行,c#,vb.net,C#,Vb.net,想象一下,您遇到一个大的文本文件,例如HTML,并且只想编辑该文件中的一行代码。 标准的方法是先读取所有内容,然后将所有内容(包括更改后的文本)写回一个单独的文件,这在本用例中不是很有效 我想使用类似的方法在编辑器中打开一个文件,找到需要的行,然后编辑这一行 是否存在允许实际编辑/替换而不是普通附加或创建的文件IO 编辑: 到目前为止,我脑海中所想的正是拉胡尔·辛格下面给出的例子。 但如前所述,如果我考虑这种方法,如果您只想编辑一行甚至几行,它似乎不是非常有效。在我提出问题的实际问题中,该文件是

想象一下,您遇到一个大的文本文件,例如HTML,并且只想编辑该文件中的一行代码。
标准的方法是先读取所有内容,然后将所有内容(包括更改后的文本)写回一个单独的文件,这在本用例中不是很有效

我想使用类似的方法在编辑器中打开一个文件,找到需要的行,然后编辑这一行

是否存在允许实际编辑/替换而不是普通附加或创建的文件IO

编辑: 到目前为止,我脑海中所想的正是拉胡尔·辛格下面给出的例子。 但如前所述,如果我考虑这种方法,如果您只想编辑一行甚至几行,它似乎不是非常有效。在我提出问题的实际问题中,该文件是一个HTML文件,希望在其中插入额外的表行。但是我认为这个用例对所有包含纯文本的文件都很有趣

这是一个敏捷的HTML解析器,它构建读/写DOM并支持 纯XPATH或XSLT。它是一个.NET代码库,允许您解析“web外” HTML文件

例如,此代码修复HTML文件中的所有HREF:

 HtmlDocument doc = new HtmlDocument();
 doc.Load("file.htm");
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
 {
    HtmlAttribute att = link["href"];
    att.Value = FixLink(att);    //FixLink() is your custom method
 }
 doc.Save("file.htm");

首先,请分享您迄今为止的尝试,因为我们不知道您的文本文件包含的数据, 首先在streamreader中读取文件并将其存储到string中,然后执行string.replace并进行编辑,您还可以使用拆分选项并通过“按包含项检查”功能进行编辑。
您可以始终使用XSLT选项,但为此,您需要使用XPath来选择

,如果您写入的字节数与要替换的字节数不完全相同,则没有这种方法。这根本不是文件的工作方式,无论使用何种语言或框架。您想要API或任何允许您执行的操作,例如
theTextFile.Append(“附加的表格行”,索引到开始)
然后只将内容插入指定的索引,而不是写入所有内容?我不认为有任何…你有没有试着读写你用例中的所有东西?听起来像是过早地进行了优化。目前我尝试并正在使用这种方法,但目前我只需要处理小文件。我无法想象,如果你只想在一个大的和平文件中更改几行,那么重新编写整个文件会非常有效。如果你用钢笔写了一封信,发现你写错了一个词,你真的要重新写整封信吗,还是只是用一些墨水擦去这个词^^^@suzi正是像这样的API是我在寻找的。