簡體   English   中英

Streamwriter.Writeline和File.WriteAllText亂寫文本

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM