gpt4 book ai didi

c# - 在 C# 中,如何复制具有任意编码的文件,逐行读取,而不添加或删除换行符

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

我需要能够获取编码未知的文本文件(例如 UTF-8、UTF-16 等)并逐行复制它,并在进行时进行特定更改。在此示例中,我正在更改编码,但是这种处理还有其他用途。

我想不通的是如何确定最后一行是否有换行符!一些程序关心具有这些记录的文件之间的区别:

Rec1<newline>
Rec2<newline>

还有一个包含这些的文件:

Rec1<newline>
Rec2

我如何区分代码中的差异以便采取适当的措施?

using (StreamReader reader = new StreamReader(sourcePath))
using (StreamWriter writer = new StreamWriter(destinationPath, false, outputEncoding))
{
bool isFirstLine = true;

while (!reader.EndOfStream)
{
string line = reader.ReadLine();

if (isFirstLine)
{
writer.Write(line);
isFirstLine = false;
}
else
{
writer.Write("\r\n" + line);
}
}


//if (LastLineHasNewline)
//{
// writer.Write("\n");
//}

writer.Flush();
}

注释掉的代码是我想做的,但我不知道如何设置条件 lastInputLineHadNewline!请记住,我对输入文件编码没有先验知识。

最佳答案

Remember, I have no a priori knowledge of the input file encoding.

这是要解决的根本问题。

如果文件可以使用任何编码,那么就没有“逐行”阅读的概念,因为您不可能知道行尾是什么。

我建议你先解决这部分,剩下的就很容易了。现在,在不知道上下文的情况下,很难说这是否意味着您应该向用户询问编码、启发式检测编码或其他方式 - 但我不会开始尝试使用数据在您完全理解之前。

关于c# - 在 C# 中,如何复制具有任意编码的文件,逐行读取,而不添加或删除换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20980979/

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