C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
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)) { 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
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. 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. 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.