我需要逐字节读取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++;
}
}
答案 0 :(得分:3)
新行字符的小数值为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
等于10
或0xA
十六进制时,条件将为false。
有关详细信息,请查看ASCII Table。
您可能还想定义一个类似const int NEW_LINE = 0xA
的常量,并在while语句中使用它而不仅仅是0xA
。这只是为了帮助您稍后了解0xA
实际意味着什么。