我收到以下错误:
“无法在流的末尾阅读”
我这样写文件:
FileStream path = new FileStream(@"C:\Users\Moosa Raza\Desktop\byte.txt", FileMode.CreateNew);
BinaryWriter file = new BinaryWriter(path);
int a = int.Parse(Console.ReadLine());
double b = double.Parse(Console.ReadLine());
string c = Console.ReadLine();
file.Write(b);
file.Write(c);
file.Write(a);
输入是a = 12,b = 13和c = raza
然后像这样阅读它:
FileStream path = new FileStream(@"C:\Users\Computer\Desktop\byte.txt", FileMode.Open);
BinaryReader s = new BinaryReader(path);
int a = s.ReadInt32();
double b = s.ReadDouble();
string c = s.ReadString();
Console.WriteLine("int = {0} , double = {1} , string = {2}",a,b,c);
Console.ReadKey();
答案 0 :(得分:1)
您必须按照完全相同的顺序读取文件。根据您的comment,写顺序为:双精度,字符串,整数。
但是,读取代码以int,double,string的顺序读取。
这会导致读取器读取错误的字节,并将某个值解释为不正确的字符串长度,从而尝试读取文件末尾之外的内容。
确保阅读顺序与书写顺序相同。
答案 1 :(得分:0)
请尝试一下。通过使用“使用”范围,当您完成写入或读取文件时,它将关闭文件。代码也将更加简洁。
using (var sw = new StreamWriter(@"C:\Users\Computer\Desktop\byte.txt"))
{
sw.WriteLine(int.Parse(Console.ReadLine()));
sw.WriteLine(double.Parse(Console.ReadLine()));
sw.WriteLine(Console.ReadLine());
}
using (var sr = new StreamReader(@"C:\Users\Computer\Desktop\byte.txt"))
{
int a = int.Parse(sr.ReadLine());
double b = double.Parse(sr.ReadLine());
string c = sr.ReadLine();
}