WriteLine Method

本文关键字:Method WriteLine | 更新日期: 2023-09-27 18:07:39

我有一个日志文件(.txt),其中包含以下信息:

Filename1 -  A3332NCDER
Filename2 -  B3332NCDER
Filename3 -  B1222NCDERE
Filename4 -  C1222NCDER
Filename4 -  C1222NCDERE

每行包含文件名和相应的ID。现在我选择ID并将其分配给List。

char[] delimiters = new char[]{''n',''r','-'};
IList<string> fileIDs = File.ReadAllText(logFileName)
         .Split(delimiters, StringSplitOptions.RemoveEmptyEntries)
         .Where((lineItem, index) => index % 2 == 1)
         .Select(lineItem => lineItem.Trim())
         .ToList(); 

我写的日志文件如下:

using (StreamWriter logFile = new StreamWriter(logFileName, true))
{
    logFile.WriteLine(fileName + "   - " + fileID);
}

这很好。我很想知道为什么WriteLine方法同时添加了'n'r

谢谢

WriteLine Method

这是我们使用打字机时代的历史包袱。要结束当前行并开始新行,您必须做两件事:

  1. 将车厢移回行首- "Carriage Return"CR简称
  2. 将纸张向上移动,这样您就可以在"Line Feed"LF(简称
  3. )上书写空白行。
当然,这些在电脑上都不需要,但是旧习难改……

不同的操作系统使用不同的行结束字符(或它们的序列),但对于大型系统:

  • Windows: CR + LF
  • Unix/Linux/OS X: LF
  • 旧mac (v9及更早版本):CR

有关更多信息和操作系统特定换行符的更大列表,请参阅维基百科关于换行符的文章。

在。net中,有一个静态属性叫做Environment。换行符,根据应用程序所运行的系统包含适当的行结束字符串。

关于你的代码,你可以简化一下,只需调用File.ReadAllLines(),你就会得到一个包含所有行的数组。这样你就不用为String操心了。分裂等。

或者如果你对。net 4依赖没有问题,可以使用File。ReadLines将每次延迟读取一行,因此您不必将整个文件存储在内存中。第三,您可以使用老的但忠实的ReadLine方法:

string line;
while ((line = myFile.ReadLine()) != null) 
{ /* do stuff to line here */ } 

默认的行结束符是一个字符串,它的值是一个回车return后跟换行符(c#中的"'r'n", Visual中的vbCrLf)基本)。

http://msdn.microsoft.com/en-us/library/zdf6yhx5.aspx

可以通过设置Console.Out.NewLine来改变终止符,例如:Console.Out.NewLine = "'r'n'r'n";

这就是为什么它是WriteLine。如果不需要标准的行结束符'n'r,则使用Write

这是微软标准的以''r'n'结尾的行。它起源于打字机时代。最初,第一个字符是将向下移动一行,第二个字符移动到当前行的开头。这样,把它们放在一起,就到了下一行的开头。