2

尝试在 while 循环中运行 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);
        }
4

2 回答 2

1

首先,您读取文件的 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-08T23:31:33.833 回答
0

您在调用fs.ReadByte()时没有先检查是否fs还有一个字节。因为您正在调用,所以您很可能会while(fs.Read(b, 0, b.Length) > 0)清空, 然后调用导致您的错误。fsbfs.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的文档。

于 2017-09-08T23:34:55.450 回答