这是代码;
foreach (var file in d.GetFiles("*.xml"))
{
string test = getValuesOneFile(file.ToString());
result.Add(test);
Console.WriteLine(test);
Console.ReadLine();
}
File.WriteAllLines(filepath + @"\MapData.txt", result);
以下是控制台中的内容;
[30000]
total=5
sp 0 -144 152 999999999
sp 0 -207 123 999999999
sp 0 -173 125 999999999
in00 1 -184 213 999999999
out00 2 1046 94 40000
以下是文本文件中的样子(在循环结束时写入)。
[30000]total=5sp 0 -144 152 999999999sp 0 -207 123 999999999sp 0 -173 125 999999999in00 1 -184 213 999999999out00 2 1046 94 40000
我需要它以与控制台输出相同的样式编写行。
答案 0 :(得分:3)
WriteAllLines
将使用环境新行字符串分隔每个值,但是,在整个计算机历史记录中,已使用许多可能的不同字符来表示新行。您正在使用某些期望不同类型的新行分隔符的程序查看文本文件。您应该使用不同的程序来查看该文件的值;如果要正确处理这种类型的分隔符(或者可以处理任何类型的分隔符),您应该将程序配置为期望给定类型的分隔符,或者您需要将WriteAllLines
替换为手册写入使用另一个新行分隔符的字符串的方法。
答案 1 :(得分:1)
问题无疑是您在输出中寻找换行符的方式。在Environment.NewLine
写的每个字符串之后将插入WriteAllLines
。
我建议在NotePad ++中打开输出文件,然后打开View-> ShowSymbol->显示行尾以查看文件中的行尾字符。例如,在我的机器上,每行末尾的[CR][LF]
(回车/换行)是Windows的标准。
答案 2 :(得分:1)
而不是WriteAllLines
您可能只想手动编写文本:
string textToWrite = "";
foreach (var res in result)
{
textToWrite += res.Replace("\r","").Replace("\n",""); //Ensure there are no line feeds or carriage returns
textToWrite += "\r\n"; //Add the Carriage Return
}
File.WriteAllText(filepath + @"\MapData.txt", textToWrite)