.NET Array Dictionary List String 2D Async DataTable Dates DateTime Enum File For Foreach Format IEnumerable If IndexOf Lambda LINQ Parse Path Process Property Regex Replace Sort Split Static StringBuilder Substring Switch Tuple


File.Open. 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.

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: Dispose and IDisposable
C# program that uses File.Open

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))
	using (FileStream stream = File.Open("C:\\bin", FileMode.Open))
	using (BinaryReader reader = new BinaryReader(stream))
	    int a = reader.ReadInt32();
	    int b = reader.ReadInt32();




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.


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. 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:


Alternatives. 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.