C# Can';用二进制读取器显示正确的结果
我使用二进制流生成了两个函数 第一个将数组作为参数,并将数据写入文件。。。代码:C# Can';用二进制读取器显示正确的结果,c#,visual-studio,stream,binaryreader,C#,Visual Studio,Stream,Binaryreader,我使用二进制流生成了两个函数 第一个将数组作为参数,并将数据写入文件。。。代码: public static void BinaryWrite(List<person> People) { string path = @"C:\Users\User\Desktop\filestream.txt"; using (FileStream fs = new FileStream(path, FileMode.Op
public static void BinaryWrite(List<person> People)
{
string path = @"C:\Users\User\Desktop\filestream.txt";
using (FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
for(int i=0;i<People.Count;i++)
{
bw.Write(People[i].name);
bw.Write(People[i].surname);
bw.Write(People[i].age);
}
}
}
}
publicstaticvoidbinarywrite(列出人员)
{
字符串路径=@“C:\Users\User\Desktop\filestream.txt”;
使用(FileStream fs=newfilestream(路径,FileMode.OpenOrCreate,FileAccess.Write))
{
使用(BinaryWriter bw=新的BinaryWriter(fs))
{
对于(inti=0;i您应该考虑BaseStream.Position
using (BinaryReader br = new BinaryReader(fs))
{
while(br.BaseStream.Position < br.BaseStream.Length)
{
Console.WriteLine(br.ReadString());
}
}
使用(BinaryReader br=新的BinaryReader(fs))
{
while(br.BaseStream.Position
ReadString()
方法要求字符串中有特殊格式,在每次读取的开头加上长度前缀
您可以这样阅读,而不是使用特殊格式:
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (BinaryReader br = new BinaryReader(fs))
{
while (br.BaseStream.Position < br.BaseStream.Length)
{
Console.WriteLine((char)br.Read());
}
}
}
使用(FileStream fs=newfilestream(路径,FileMode.Open,FileAccess.Read))
{
使用(BinaryReader br=新的BinaryReader(fs))
{
while(br.BaseStream.Position
相同的ExpException仍然得到相同的异常
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
using (BinaryReader br = new BinaryReader(fs))
{
while (br.BaseStream.Position < br.BaseStream.Length)
{
Console.WriteLine((char)br.Read());
}
}
}