我有一个文本文件,其中每行以 CRLF 结尾,这很好,但文件在行内容中有一些 LF 的行。
我试图替换行内容中的 LF ,如下所示:
var fileContent = File.ReadAllText(fileName);
fileContent = Regex.Replace(fileContent, @"(?<!\r)\n", " ");
File.WriteAllText(fileName, fileContent);
这很好用。但是当我试图处理大文件(超过150mb)时,抛出内存异常。
尝试
List<string> text = File.ReadAllLines(filePath).ToList();
读取行并按行替换。但这不起作用,因为它像 LF
如何通过 CRLF
强制分割线条答案 0 :(得分:0)
您可以使用返回File.ReadLines的IEnumerable,这意味着仅在需要时使用yield功能一次提取一行。 /> 成功写入 anotherFilename 后,我们会删除 fileName 并将 anotherFilename 移至其位置。
foreach (var line in File.ReadLines(fileName))
{
File.WriteAllText(anotherFilename, line + Environment.NewLine);
}
File.Delete(fileName);
File.Move(anotherFilename, filename);
注意:尚未经过测试。