StreamWriter
This helpful C# class
writes text data and files. It enables easy and efficient text output. It is one of the first choices for file output in C#.
StreamWriter
is best placed in a using
-statement. This ensures it is removed from memory when no longer needed. The syntax is easy to use once it is familiar.
We first declare and initialize a new StreamWriter
instance in a using construct. Please note how the System.IO
namespace is included at the top of the file.
StreamWriter
, it controls low-level resource usage.StreamWriter
is initialized with the file name "important.txt". Three writes are done using StreamWriter
.WriteLine
methods append a newline "\r\n" at each call.using System.IO; using (StreamWriter writer = new StreamWriter("important.txt")) { writer.Write("Word "); writer.WriteLine("word 2"); writer.WriteLine("Line"); }(Text is in "important.txt" file.) Word word 2 Line
Append
textIt is easy to append text to a file with StreamWriter
. The file is not erased, but just reopened and new text is added to the end. We also see how you can specify a full path.
StreamWriter
is initialized and it opens "C:\log.txt" for appending. The second argument (true) specifies an append operation.string
.string
to it.using System.IO; // Write single line to new file. using (StreamWriter writer = new StreamWriter("C:\\log.txt", true)) { writer.WriteLine("Important data line 1"); } // Append line to the file. using (StreamWriter writer = new StreamWriter("C:\\log.txt", true)) { writer.WriteLine("Line 2"); }(File "log.txt" contains these lines.) Important data line 1 Line 2
Often we need to write out an array or List
of strings. A good solution is to put the loop inside the using statement. This avoids creating more than one file handle in Windows.
var
, which makes the syntax shorter but equivalent in functionality. The file "loop.txt" is opened only once for writing.string
can be easily used with Write. You have to specify a substitution marker {0} in the first parameter.using System.IO; // Use var type which is shorter. using (var writer = new StreamWriter("loop.txt")) { // Loop through ten numbers. for (int i = 0; i < 10; i++) { // Write format string to file. writer.Write("{0:0.0} ", i); } }(These numbers are in the file "loop.txt".) 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0
String
interpolationThis syntax can be used to directly insert variables into a string
before it is written with Write or WriteLine
. We use the "$" char
before the string
.
String
interpolation is about as fast as the older format syntax—it is a good alternative.using System.IO; using (StreamWriter writer = new StreamWriter("C:\\programs\\file.txt")) { string animal = "cat"; int size = 12; // Use string interpolation syntax to make code clearer. writer.WriteLine($"The {animal} is {size} pounds."); }The cat is 12 pounds.
With the using
-statement and StreamWriter
, we wrote text files. StreamWriter
is an excellent class
—it is useful for many C# developers.