当试图在while循环值中运行eof语句时获取溢出异常,对于字符来说,eof值要么太大要么太小。
string filePath = @"C:\Users\Klanix\Desktop\NewC#\testfile2.txt";
FileStream fs = File.Open(filePath, FileMode.Open);
char readChar;
byte[] b = new byte[1024];
while(fs.Read(b, 0, b.Length) > 0)
{
readChar = Convert.ToChar(fs.ReadByte());
Console.WriteLine(readChar);
}发布于 2017-09-08 23:31:33
首先读取文件的1024字节(可能是文件的末尾),然后尝试读取下一个字节,在这种情况下,该字节将返回-1,并且不能转换为char。
你为什么要读第一个1024字节?试着每次读取1字节:
string filePath = @"C:\Users\Klanix\Desktop\NewC#\testfile2.txt";
FileStream fs = File.Open(filePath, FileMode.Open);
int val;
while((val = fs.ReadByte()) > 0)
{
readChar = Convert.ToChar(val);
Console.WriteLine(readChar);
}你不需要byte[] b = new byte[1024];
发布于 2017-09-08 23:34:55
在调用fs.ReadByte()时,无需首先检查fs是否仍有一个字节。因为您正在调用while(fs.Read(b, 0, b.Length) > 0),所以很可能会将fs空到b中,然后调用fs.ReadByte()会导致您的错误。
试一试如下:
string filePath = @"C:\Users\Klanix\Desktop\NewC#\testfile2.txt";
FileStream fs = File.Open(filePath, FileMode.Open);
for (int i = 0; i < fs.Length; i++)
{
char readChar = Convert.ToChar(fs.ReadByte());
Console.WriteLine(readChar);
}还可以尝试阅读ReadByte的文档。
https://stackoverflow.com/questions/46125683
复制相似问题