YouTip LogoYouTip

Csharp Binary Files

[![Image 1: C# File Input and Output](#) C# File Input and Output](#) **BinaryReader** and **BinaryWriter** classes are used for reading and writing binary files. A **BinaryReader** object is created by passing a **FileStream** object to its constructor. The following table lists some common **methods** of the **BinaryReader** class: | No. | Method & Description | | --- | --- | | 1 | **public override void Close()** Closes the BinaryReader object and the underlying stream. | | 2 | **public virtual int Read()** Reads characters from the underlying stream and advances the current position of the stream. | | 3 | **public virtual bool ReadBoolean()** Reads a single Boolean value from the current stream and advances the current position of the stream by one byte. | | 4 | **public virtual byte ReadByte()** Reads the next byte from the current stream and advances the current position of the stream by one byte. | | 5 | **public virtual byte[] ReadBytes( int count )** Reads a sequence of bytes from the current stream into a byte array and advances the current position of the stream by the number of bytes read. | | 6 | **public virtual char ReadChar()** Reads the next character from the current stream and advances the current position of the stream in accordance with the Encoding used and the specific characters being read from the stream. | | 7 | **public virtual char[] ReadChars( int count )** Reads a sequence of characters from the current stream, returns an array of chars, and advances the current position of the stream in accordance with the Encoding used and the specific characters being read from the stream. | | 8 | **public virtual double ReadDouble()** Reads an 8-byte floating point value from the current stream and advances the current position of the stream by eight bytes. | | 9 | **public virtual int ReadInt32()** Reads a 4-byte signed integer from the current stream and advances the current position of the stream by four bytes. | | 10 | **public virtual string ReadString()** Reads a length-prefixed string from the current stream into a string and advances the current position of the stream according to the specific encoding used and the characters that are read in the stream. | For a complete list of methods, please visit Microsoft's C# documentation. A **BinaryWriter** object is created by passing a **FileStream** object to its constructor. The following table lists some common **methods** of the **BinaryWriter** class: | No. | Method & Description | | --- | --- | | 1 | **public override void Close()** Closes the BinaryWriter object and the underlying stream. | | 2 | **public virtual void Flush()** Clears all buffers for the current writer and causes any buffered data to be written to the underlying device. | | 3 | **public virtual long Seek( int offset, SeekOrigin origin )** Sets the position within the current stream. | | 4 | **public virtual void Write( bool value )** Writes a one-byte Boolean value to the current stream, with a 0 representing false and a 1 representing true. | | 5 | **public virtual void Write( byte value )** Writes an unsigned byte to the current stream and advances the current position of the stream by one byte. | | 6 | **public virtual void Write( byte[] buffer )** Writes a byte array to the underlying stream. | | 7 | **public virtual void Write( char ch )** Writes a Unicode character to the current stream and advances the current position of the stream in accordance with the Encoding used and the specific characters being written to the stream. | | 8 | **public virtual void Write( char[] chars )** Writes a character array to the current stream and advances the current position of the stream in accordance with the Encoding used and the specific characters being written to the stream. | | 9 | **public virtual void Write( double value )** Writes an 8-byte floating point value to the current stream and advances the current position of the stream by eight bytes. | | 10 | **public virtual void Write( int value )** Writes a four-byte signed integer to the current stream and advances the current position of the stream by four bytes. | | 11 | **public virtual void Write( string value )** Writes a length-prefixed string to the current stream in the current encoding of the BinaryWriter and advances the current position of the stream in accordance with the Encoding used and the specific characters being written to the stream. | For a complete list of methods, please visit Microsoft's C# documentation. The following example demonstrates reading and writing binary data: ## Example using System; using System.IO; namespace BinaryFileApplication { class Program { static void Main(string[] args) { BinaryWriter bw; BinaryReader br; int i =25; double d =3.14157; bool b =true; string s ="I am happy"; // Create the file try { bw =new BinaryWriter(new FileStream("mydata", FileMode.Create)); } catch(IOException e) { Console.WriteLine(e.Message+"n Cannot create file."); return; } // Write to the file try { bw.Write(i); bw.Write(d); bw.Write(b); bw.Write(s); } catch(IOException e) { Console.WriteLine(e.Message+"n Cannot write to file."); return; } bw.Close(); // Read from the file try { br =new BinaryReader(new FileStream("mydata", FileMode.Open)); } catch(IOException e) { Console.WriteLine(e.Message+"n Cannot open file."); return; } try { i = br.ReadInt32(); Console.WriteLine("Integer data: {0}", i); d = br.ReadDouble(); Console.WriteLine("Double data: {0}", d); b = br.ReadBoolean(); Console.WriteLine("Boolean data: {0}", b); s = br.ReadString(); Console.WriteLine("String data: {0}", s); } catch(IOException e) { Console.WriteLine(e.Message+"n Cannot read from file."); return; } br.Close(); Console.ReadKey(); } } } When the above code is compiled and executed, it produces the following result: Integer data: 25Double data: 3.14157Boolean data: TrueString data: I am happy [![Image 2: C# File Input and Output](#) C# File Input and Output](#)
← Csharp Windows File SystemCsharp Text Files β†’