繁体   English   中英

使用C#将文件中的行结尾从DOS转换为UNIX格式

[英]Converting the line endings in a file from DOS to UNIX format in C#

我想将文件中的行尾从DOS格式转换为C#中的Unix格式。

Unix系统使用换行符(LF)作为行分隔符。 唯一值得注意的例外是Microsoft Windows,它使用回车符和换行符(CRLF)。

如何使用C#将文件中的行尾从DOS更改为Unix格式。 需要有关转换的一些指导。

这是您的答案将文件从Dos转换为Unix并返回

private void Dos2Unix(string fileName)
{
    const byte CR = 0x0D;
    const byte LF = 0x0A;
    byte[] data = File.ReadAllBytes(fileName);
    using (FileStream fileStream = File.OpenWrite(fileName))
    {
        BinaryWriter bw = new BinaryWriter(fileStream);
        int position = 0;
        int index = 0;
        do
        {
            index = Array.IndexOf<byte>(data, CR, position);
            if ((index >= 0) && (data[index + 1] == LF))
            {
                // Write before the CR
                bw.Write(data, position, index - position);
                // from LF
                position = index + 1;
            }
        }
        while (index >= 0);
        bw.Write(data, position, data.Length - position);
        fileStream.SetLength(fileStream.Position);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM