我需要逐字节读取CSV文件(注意:我不想逐行读取)。
如何检测读取的字节是否是换行符?
如何知道到达终点?

int count = 0;
byte[] buffer = new byte[MAX_BUFFER];

using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
    // Read bytes form file until the next line break -or- eof
    // so we don't break a csv row in the middle

    // What should be instead of the 'xxx' ?

    while (((readByte = fs.ReadByte()) != 'xxx') && (readByte != -1))
    {
        buffer[count] = Convert.ToByte(readByte);
        count++;
    }
}

最佳答案

换行符具有十进制值10或十六进制值0xA。为了检查换行符,将结果与0xA进行比较

int count = 0;
byte[] buffer = new byte[MAX_BUFFER];

using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
    // Read bytes form file until the next line break -or- eof
    // so we don't break a csv row in the middle

    // What should be instead of the 'xxx' ?

    while (((readByte = fs.ReadByte()) != 0xA) && (readByte != -1))
    {
        buffer[count] = Convert.ToByte(readByte);
        count++;
    }
}


readByte等于100xA十六进制时,条件将为false。
请参阅ASCII Table以获取更多信息。

更新

您可能还想定义一个像const int NEW_LINE = 0xA的常量,并在while语句中使用它而不是仅仅使用0xA。这只是为了帮助您稍后了解0xA的实际含义。

09-26 11:56