[英]Streamwriter.Writeline and File.WriteAllText writing text out of order
我將幾個xml文件的內容寫入一個文件時遇到問題。 當我運行程序時,輸出的格式正確,但是單詞順序混亂。 一個例子:
我的字符串是"<s:AttributeType name=\\"Shift\\" number=\\"34\\" nullable=\\"true\\" writeunknown=\\"true\\">"
因此它應該打印<s:AttributeType name="Shift" number="34" nullable="true" writeunknown="true">
而是<s:AttributeType name="Shift" writeunknown="true" number="34" nullable="true">
返回。
其中一些文件是使用File.WriteAllText(@"C:\\Users\\status.xml", xsh);
其中“ xsh”是包含字符串的變量。
其余部分使用以下循環編寫:
foreach (var i in Numbers.GetWSnumber())
{
string contents = "";
string curFile = @"\\production\public\Staus\TStatus\WS" + i.SetId + ".xml";
if (File.Exists(curFile))
{
System.IO.StreamReader file = new System.IO.StreamReader(curFile);
while ((contents = file.ReadLine()) != null)
{
using (StreamWriter sw = File.AppendText(@"C:\Users\status.xml"))
{
sw.WriteLine(contents);
}
}
file.Close();
}
}
任何幫助表示贊賞
XML屬性的順序並不重要,因此我不必擔心。 但是,如果確實要打擾您,我建議您移動using語句。
using (StreamWriter sw = File.AppendText(@"C:\Users\status.xml"))
{
sw.WriteLine(contents);
}
盡管可能已對其進行了優化,以使其工作與更好地編寫時相同,但當前分配此方法的方式是分配新的StreamWriter
,然后在每次迭代時都將其丟棄。
您的using語句應該包裝while
循環,而不是其他方式。 這可能可以解決問題(盡管我認為不太可能),因為我不知道編譯器如何處理這一行。 無論哪種方式,都值得改變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.