我有一个别人发来的文本文件。如果我在 NotePad++ 中打开并查看所有符号,我可以看到 {LF} 和 {CRLF} 都用作行分隔符。
例子:
第 1 行:ABC {CRLF}
第 2 行:XYZ {LF}
问:如果我想替换{CRLF}用{LF},并写入到一个新的文件,为什么输出文本文件无法显示单独的线和分隔符号消失。Write只是写了一行并追加另一行而不开始新行,但该行仍然{LF}在其中,不是吗?那是因为我在Windows系统下工作吗?但如何既原始文件{LF},并{CR}{LF}可以被看作是两个单独的行?
代码非常简单:
using (StreamReader sr = new StreamReader(@"\\...\TEST.txt"))
{
using (StreamWriter sw = new StreamWriter(@"\\...\TEST2.txt"))
{
string line = "";
while ((line = sr.ReadLine()) != null)
{
sw.Write(line.Replace("\r\n", "\n"));
}
}
}
Run Code Online (Sandbox Code Playgroud)
当您使用时,ReadLine()您正在修剪 EOL 字符(CR 和 LF)。相反,您应该执行以下方法之一:
string file1 = @"\\...\TEST.txt";
string file2 = @"\\...\TEST2.txt";
using (StreamReader sr = new StreamReader(file1))
{
using (StreamWriter sw = new StreamWriter(file2))
{
string text = sr.ReadToEnd();
sw.Write(text.Replace("\r\n", "\n"));
}
}
Run Code Online (Sandbox Code Playgroud)
或者
File.WriteAllText(file2,File.ReadAllText(file1).Replace("\r\n", "\n"));
Run Code Online (Sandbox Code Playgroud)
但前提是你的文件不是太大。否则,吉姆解决方案是要走的路。