gpt4 book ai didi

c# - WriteLine 方法

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:47 25 4
gpt4 key购买 nike

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

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

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

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

谢谢

最佳答案

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

  1. 将回车移回行首 - “Carriage Return” 或简称为 CR
  2. 将纸张向上移动,这样您就可以在空白行上书写 - “Line Feed” 或简称为 LF

当然,这些在计算机上都不是必需的,但是旧习惯很难改掉......

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

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

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

在 .NET 中,有一个名为 Environment.Newline 的静态属性它包含基于您的应用程序运行的系统的适当的行结束字符串。


关于您的代码,您可以稍微简化一下,只需调用 File.ReadAllLines()你会得到一个包含所有行的数组。这样你就不必为 String.Split 等而烦恼了。

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

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

关于c# - WriteLine 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7304724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com