[英]Write to Specific line in text file C#
我有一個正在工作的Web應用程序。 我需要能夠獲取輸入數據並在(x)行數之后附加一個文本文件。
我的Web應用程序將C#與asp.net一起使用
誰能幫我嗎?
通常,除非讀取文件大小固定(以字節為單位),否則無法“插入”文件或進入特定行而不讀取所有其他文件。
通常,方法是這樣的:
(這可確保在任何一點上至少都有某種形式的舊文件。如果您只是刪除舊文件,然后將新文件移到適當位置,則可以使其稍微簡化一些。)
不要忘記確保同步正確-您不想同時運行此算法的兩個副本...
編輯:如果您有XML文件,那么我建議通常只是將其加載到DOM中(例如,使用LINQ to XML),進行更改,然后再次將其保存。 不要將其視為非結構化文本文件。
您可以使用XmlReader
和XmlWriter
提高效率-但您肯定必須讀取整個原始文件並寫出新文件。 您是否對簡單代碼進行了基准測試,發現它太慢了? 你經常這樣做嗎? 文件有多大?
我建議您找到另一種策略,特別是關系數據庫管理系統。 文本文件位於文件系統上,並且不像良好的(read:not Access)數據庫那樣不支持並發訪問。 Web應用程序確實支持並發請求。 一旦有多個用戶同時工作,您的應用程序將遇到IO異常。
好的-感謝喬恩的幫助,我已經弄清楚了。
FileInfo fi = new FileInfo(Server.MapPath("~/Playlists/" + user + "/" + ListBox1.SelectedItem.Text + ".wpl"));
XmlDocument originalXML = new XmlDocument();
originalXML.Load(fi.FullName);
XmlWriter newXML = XmlWriter.Create(Server.MapPath("~/Playlists/" + user + "/" + ListBox1.SelectedItem.Text + ".wpl"));
XmlNode smil = originalXML.SelectSingleNode("smil/body/seq");
XmlNode media = originalXML.CreateNode(XmlNodeType.Element, "media", null);
XmlAttribute src = originalXML.CreateAttribute("src");
DirectoryInfo di = new DirectoryInfo(Server.MapPath("~" + folder));
foreach (FileInfo file in di.GetFiles("*", SearchOption.AllDirectories))
{
string path = file.FullName;
path = path.Replace(@"F:\Music\Music by Artist", "http://bgab-mor01-n/Music");
path = path.Replace(@"\", "/");
path = path.Replace(",", "");
path = path.Replace("'", "");
path = path.Replace("&", "");
if (file.Extension == ".mp3" || file.Extension == ".wma" || file.Extension == ".MP3")
{
src.Value = path;
media.Attributes.Append(src);
smil.AppendChild(media);
}
}
originalXML.Save(newXML);
newXML.Close();
沒有你,我真的做不到。 你就是男人。 謝謝你的一切。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.