文件流溢出异常

FileStream Overflow Exception

在 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);
        }

首先你读取文件的 1024 字节(可能是你到达文件末尾)然后你尝试读取下一个字节,在这种情况下将 return -1 并且不能转换为字符

你为什么要读第一个 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];

您在调用 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 的文档。