TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

C# BinaryWriter Type

This C# example program uses the BinaryWriter class. It writes an output file.

BinaryWriter creates binary files.

A binary file uses a specific data layout for its bytes. The BinaryWriter type is ideal. It provides a stream-based mechanism for imperatively writing data to a file location on the disk.

Note: Here we see an example of using the BinaryWriter class, which will create the binary file for the example.

Example. BinaryWriter writes data. It is similar to BinaryReader, which reads data. Microsoft states that BinaryReader "reads primitive data types as binary values in a specific encoding." Primitive types are value types like int, uint or char.

BinaryReaderIntUintChar

Based on:

.NET 4.5

C# program that uses BinaryWriter

using System.IO;

class Program
{
    static void Main()
    {
	W();
    }

    static void W()
    {
	// Create 12 integers.
	int[] a = new int[]
	{
	    1,
	    4,
	    6,
	    7,
	    11,
	    55,
	    777,
	    23,
	    266,
	    44,
	    82,
	    93
	};
	// Use using statement and File.Open.
	using (BinaryWriter b = new BinaryWriter(
	    File.Open("file.bin", FileMode.Create)))
	{
	    // Use foreach and write all 12 integers.
	    foreach (int i in a)
	    {
		b.Write(i);
	    }
	}
    }
}

In this example, File.Open returns a stream that the BinaryWriter writes through to. Next, use Write to write a value to the file. The Write method is overloaded, which means it handles the exact type you pass it correctly.

File.OpenOverload

File data. What does the output file look like visually when you inspect it in an editor such as Visual Studio? It is not a great work of art. It is not something easily read. It looks like random bytes.

This is because the data is not encoded as a text file but instead a more efficient, machine-level representation of numeric data. Don't worry—the file can still be treated as a series of numbers.

Close. Do you need to call the Close method on the BinaryWriter? The using statement will cause the Dispose method to be called. In the Dispose implementation, Close is called. So the answer is no—an explicit Close call is not necessary.

Using

Also: If you call BinaryWriter's virtual Close implementation, it calls Dispose. And Dispose then calls the Stream's Close implementation.

Stream

Implementation of Dispose: IL

.method family hidebysig newslot virtual
	instance void  Dispose(bool disposing) cil managed
{
  // Code size       15 (0xf)
  .maxstack  8
  IL_0000:  ldarg.1
  IL_0001:  brfalse.s  IL_000e
  IL_0003:  ldarg.0
  IL_0004:  ldfld      class System.IO.Stream
			   System.IO.BinaryWriter::OutStream
  IL_0009:  callvirt   instance void System.IO.Stream::Close()
  IL_000e:  ret
} // end of method BinaryWriter::Dispose

Summary. BinaryWriter provides an efficient and easy way to imperatively construct a binary file. Ideal for certain file formats that your programs must support, the BinaryWriter is used in many projects around the world.


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf