2014-10-17 125 views
0

想象一下,您遇到了一個很大的文本文件,例如HTML,並且只想編輯此文件中的一行代碼。
標準方法是首先讀取everthing,然後將包括更改後的文本在內的everthing寫回到單獨的文件中,這在該用例中效率不高。編輯文本文件中的單行

我想用類似的方法在Editor中打開一個文件,找到你需要的行,然後編輯這個特定的行。

是否有任何FileIO允許實際編輯/替換而不是簡單的追加或創建?

編輯: 到目前爲止,我腦海中的東西正是Rahul Singh在下面給出的例子。 但如前所述,如果我想到這種方法,如果您只想編輯一行甚至幾行,它看起來效率不高。在我提出問題的實際問題中,該文件是一個希望插入額外表格行的HTML文件。但我認爲這個用例對於包含純文本的所有文件也很有趣。

+2

如果你沒有寫出想要替換的完全相同的字節數,否則沒有這種方法。這根本不是文件的工作方式,無論使用的是什麼語言或框架。 – nvoigt 2014-10-17 06:42:44

+0

你想要一個API或任何允許你做的東西,例如'theTextFile.Append(「ADDITIONAL_TABLE_ROW」,INDEX_TO_START);'然後只是將內容插入指定的索引,*不*寫所有的內容?我不認爲有任何... – Suzi 2014-10-17 07:02:50

+0

您是否嘗試過在您的用例中讀寫所有內容?聽起來像過早優化。 – 2014-10-17 07:08:22

回答

1

您可以使用HTML Agility Pack

這是一個靈活的HTML解析器,建立一個讀/寫DOM,並支持 平原XPATH或XSLT.It是一個.NET代碼庫,使您解析「從網絡中」 HTML文件。

例如這段代碼解決所有的HREF在HTML文件中:

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"); 
0

首先請分享你至今嘗試過,因爲我們沒有對數據的任何想法,你的文本文件包含, 首先閱讀通過streamreader中的文件並將其存儲到字符串中,然後執行string.replace並執行編輯,也可以使用split選項並通過包含的函數檢查它是否進行編輯。 ,你總是可以選擇XSLT選項,但是你需要使用XPath來選擇