How to read whole binary file (not only the first variables) including string, long and int

209 Views Asked by At
using (var fileStream = new FileStream("data.bin", FileMode.Append, FileAccess.Write))
using (var bw1 = new BinaryWriter(fileStream))
{
    bw1.Write(jmeno);
    bw1.Write(date);
    bw1.Write(rodnecislo);
    bw1.Write(sarze);
}

using (var fileStream = new FileStream("data.bin", FileMode.Open, FileAccess.Read))
using (var br1 = new BinaryReader(fileStream))
{
    string readname = br1.ReadString();
    int readdate = br1.ReadInt32();
    long readcislo = br1.ReadInt64();
    long readsarze = br1.ReadInt64();
    Console.WriteLine(readname);
    Console.WriteLine(readdate);
    Console.WriteLine(readcislo);
    Console.WriteLine(readsarze);
}

This is how the BinaryWriter looks like. I don't know how to make the console write this whole binary file.

1

There are 1 best solutions below

0
Klaus Gütter On

OK, then here is how to do it:

using (var fileStream = new FileStream("data.bin", FileMode.Open, FileAccess.Read))
using (var br1 = new BinaryReader(fileStream))
{
    while (br1.BaseStream.Position != br1.BaseStream.Length)
    {
        string readname = br1.ReadString();
        int readdate = br1.ReadInt32();
        long readcislo = br1.ReadInt64();
        long readsarze = br1.ReadInt64();
        Console.WriteLine(readname);
        Console.WriteLine(readdate);
        Console.WriteLine(readcislo);
        Console.WriteLine(readsarze);
    }
}

For an explanation of the while condition see e.g. here