File.Open
How can you use the File.Open
method in a C# program? Found in the System.IO
namespace, File.Open
returns a FileStream
that you can use.
The arguments you pass to the File.Open
method determine its action. It is often used within a using
-statement.
Here we use File.Open
as part of the using
-resource-acquisition pattern. This ensures proper recovery of system resources.
FileMode.Create
, we create a new file (or create it again if it already exists). With FileMode.Open
, we open an existing file.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); } } }303 720
FileMode
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.
FileMode.Append FileMode.Create FileMode.CreateNew FileMode.Open FileMode.OpenOrCreate FileMode.Truncate
BinaryWriter
and BinaryReader
are a practical use of FileStream
. These constructors receive Stream
references. This means they can be used with File.Open
.
File.Open
returns a FileStream
, and FileStream
is derived from Stream
, we can use FileStream
in the constructors.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.
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.
We used the File.Open
method and described FileMode
. With the using statement we can use File.Open
as part of a powerful file-handling construction.