C# File.Open

Question and answer

How can you use File.Open? Found in the System.IO namsespace, File.Open returns a FileStream that you can use. The arguments you pass to it determine its action. It is often used within a using-statement.

Example

Here we use File.Open as part of the using-resource-acquisition pattern. This ensures proper recovery of system resources. The first argument is the name of the file we are acting upon. The second is a FileMode enumerated constant.

Using keyword

Note:With FileMode.Create, we create a new file (or create it again if it already exists). With FileMode.Open, we open an existing file.

Using Statement Calls Dispose
Program that uses File.Open: C#

using System;
using System.IO;

class Program
{
    static void Main()
    {
	using (FileStream stream = File.Open("C:\\bin", FileMode.Create))
	using (BinaryWriter writer = new BinaryWriter(stream))
	{
	    writer.Write(303);
	    writer.Write(720);
	}
	using (FileStream stream = File.Open("C:\\bin", FileMode.Open))
	using (BinaryReader reader = new BinaryReader(stream))
	{
	    int a = reader.ReadInt32();
	    int b = reader.ReadInt32();

	    Console.WriteLine(a);
	    Console.WriteLine(b);
	}
    }
}

Output

303
720
Abstract squares

BinaryWriter and BinaryReader are a practical use of FileStream. These constructors receive Stream references. Because File.Open returns a FileStream, and FileStream is derived from Stream, we can use FileStream in the constructors.

StreamBinaryWriterBinaryReader

Round-tripping. We can see in this program that the numbers 303 and 720 are written to the "C:\bin" file. Then, they are read back into integers from that same file. This is an inefficient way to write two numbers to the screen.

FileMode

Note

Let's review the FileMode enumerated type. To use FileMode, type FileMode and press the period key, and then read the descriptions for each constant in Visual Studio. The constants are fairly self-descriptive.

Enum values:

FileMode.Append
FileMode.Create
FileMode.CreateNew
FileMode.Open
FileMode.OpenOrCreate
FileMode.Truncate

Alternatives

Programming tip

There are alternative methods to File.Open.
You can instead call File.OpenRead,
File.OpenText,
and File.OpenWrite. Conceptually, these methods are the same as using File.Open with certain FileMode arguments.

Summary

We used the File.Open method and described the FileMode enumerated type. With the using statement, and the implicit casting in the C# language, we can use File.Open as part of a powerful file-handling construction.


C#: File