文件流溢出异常
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 的文档。
在 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 的文档。