一、StreamWriter简介
StreamWriter是C#中用来写入文本文件的对象。它作为TextWriter的派生类,提供了一组可以直接写入字符串的方法。这些方法可以写入多种格式的数据,在默认情况下,它们会将数据写入UTF-8编码的文本文件。
StreamWriter提供了许多可用于文件写入的方法,可以自定义一些格式,例如写入换行符、指定编码方式、数据长度/精度等等。在许多情况下,StreamWriter可以替代更复杂的文件写入技术,如XML、JSON等。
二、创建StreamWriter对象
在创建StreamWriter对象之前,需要确定文件存储路径和文件名。可以使用相对路径或绝对路径创建一个StreamWriter对象,或者可以使用文件名作为参数创建一个StreamWriter对象。
// 使用文件名创建一个StreamWriter对象 StreamWriter writer = new StreamWriter("test.txt"); // 使用绝对路径创建一个StreamWriter对象 StreamWriter writer2 = new StreamWriter("c:\\temp\\test.txt"); // 使用相对路径创建一个StreamWriter对象 StreamWriter writer3 = new StreamWriter("myfolder\\test.txt");
上述创建StreamWriter对象的代码,都默认使用UTF-8格式创建文本文件。如果你需要使用其他编码格式,可以使用其他写入方式创建。
三、写入文本数据
StreamWriter提供了多种可用于写入文本数据的方法。以下是其中一些方法:
// 写入字符串 writer.Write("Hello World"); // 写入字符串并换行 writer.WriteLine("Hello World"); // 写入一个字符数组 char[] buffer = { 'H', 'e', 'l', 'l', 'o' }; writer.Write(buffer, 0, buffer.Length); // 写入一个整数 int num = 1234; writer.Write(num); // 将带格式的字符串写入文件 string formatString = "{0,-10}{1,-5}{2,-5}{3,-5}{4,-5}"; writer.WriteLine(formatString, "Name", "Math", "Eng", "Phy", "Chem"); // 写入一个对象 MyClass myObj = new MyClass(); writer.Write(myObj);
StreamWriter方法中的最后一个Write()可以直接将对象写入文本文件,文本文件中将会写入对象的ToString()方法返回的字符串。
四、指定编码格式
StreamWriter默认使用UTF-8编码写入文本文件。但是,如果需要使用其他编码格式,可以指定编码格式。以下是指定编码格式的一些方法:
// 指定编码格式为UTF-16 StreamWriter writer = new StreamWriter("test.txt", false, Encoding.Unicode); // 指定编码格式为GB2312 StreamWriter writer2 = new StreamWriter("test.txt", false, Encoding.GetEncoding("GB2312")); // 使用流的编码格式来写入 MemoryStream stream = new MemoryStream(); StreamWriter writer = new StreamWriter(stream, Encoding.ASCII); writer.Write("Hello World");
五、释放资源
StreamWriter是一种可用于写入文件的对象,因此需要在使用后释放资源。可以调用StreamWriter的Dispose()方法来释放资源:
// 关闭并释放资源 writer.Close(); writer.Dispose();
或者使用using语句释放资源:
using (StreamWriter writer = new StreamWriter("test.txt")) { writer.Write("Hello World"); }
当using语句结束时,writer将自动被Dispose()释放资源。
六、总结
StreamWriter是一个强大的文件写入工具,可以用来写入文本数据。在使用StreamWriter时,需要确定文件路径和文件名,使用可用的方法来写入文本数据并指定编码格式。使用StreamWriter时,需要确保释放资源,以避免资源泄漏。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/304969.html