System.IO.StreamWriter 类

方法描述

实现一个 TextWriter,使其以一种特定的编码向流中写入字符。

语法定义(C# System.IO.StreamWriter 类 的用法)

[SerializableAttribute]
[ComVisibleAttribute(true)]
public class StreamWriter : TextWriter

构造函数

构造函数名称 构造函数描述
StreamWriter(Stream) 用 UTF-8 编码及默认缓冲区大小,为指定的流初始化 StreamWriter 类的一个新实例。
StreamWriter(String) 使用默认编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。
StreamWriter(Stream, Encoding) 用指定的编码及默认缓冲区大小,为指定的流初始化 StreamWriter 类的新实例。
StreamWriter(String, Boolean) 使用默认编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。 如果该文件存在,则可以将其覆盖或向其追加。 如果该文件不存在,则此构造函数将创建一个新文件。
StreamWriter(Stream, Encoding, Int32) 用指定的编码及缓冲区大小,为指定的流初始化 StreamWriter 类的新实例。
StreamWriter(String, Boolean, Encoding) 使用指定编码和默认缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。 如果该文件存在,则可以将其覆盖或向其追加。 如果该文件不存在,则此构造函数将创建一个新文件。
StreamWriter(String, Boolean, Encoding, Int32) 使用指定编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。 如果该文件存在,则可以将其覆盖或向其追加。 如果该文件不存在,则此构造函数将创建一个新文件。

成员/方法

方法名称 方法描述
Close 关闭当前的 StreamWriter 对象和基础流。 (重写 TextWriter.Close()。)
CreateObjRef 创建一个对象,该对象包含生成用于与远程对象进行通信的代理所需的全部相关信息。 (继承自 MarshalByRefObject。)
Dispose() 释放由 TextWriter 对象占用的所有资源。 (继承自 TextWriter。)
Dispose(Boolean) 释放由 StreamWriter 占用的非托管资源,还可以另外再释放托管资源。 (重写 TextWriter.Dispose(Boolean)。)
Equals(Object) 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。)
Finalize 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。)
Flush 清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。 (重写 TextWriter.Flush()。)
GetHashCode 用作特定类型的哈希函数。 (继承自 Object。)
GetLifetimeService 检索控制此实例的生存期策略的当前生存期服务对象。 (继承自 MarshalByRefObject。)
GetType 获取当前实例的 Type。 (继承自 Object。)
InitializeLifetimeService 获取控制此实例的生存期策略的生存期服务对象。 (继承自 MarshalByRefObject。)
MemberwiseClone() 创建当前 Object 的浅表副本。 (继承自 Object。)
MemberwiseClone(Boolean) 创建当前 MarshalByRefObject 对象的浅表副本。 (继承自 MarshalByRefObject。)
ToString 返回表示当前对象的字符串。 (继承自 Object。)
Write(Boolean) 将 Boolean 值的文本表示形式写入文本流。 (继承自 TextWriter。)
Write(Char) 将字符写入流。 (重写 TextWriter.Write(Char)。)
Write(Char[]) 将字符数组写入流。 (重写 TextWriter.Write(Char[])。)
Write(Decimal) 将十进制值的文本表示形式写入文本流。 (继承自 TextWriter。)
Write(Double) 将 8 字节浮点值的文本表示形式写入文本流。 (继承自 TextWriter。)
Write(Int32) 将 4 字节带符号整数的文本表示形式写入文本流。 (继承自 TextWriter。)
Write(Int64) 将 8 字节带符号整数的文本表示形式写入文本流。 (继承自 TextWriter。)
Write(Object) 通过在对象上调用 ToString 将此对象的文本表示形式写入文本流。 (继承自 TextWriter。)
Write(Single) 将 4 字节浮点值的文本表示形式写入文本流。 (继承自 TextWriter。)
Write(String) 将字符串写入流。 (重写 TextWriter.Write(String)。)
Write(UInt32) 将 4 字节无符号整数的文本表示形式写入文本流。 (继承自 TextWriter。)
Write(UInt64) 将 8 字节无符号整数的文本表示形式写入文本流。 (继承自 TextWriter。)
Write(String, Object) 使用与 String.Format 相同的语义写出格式化的字符串。 (继承自 TextWriter。)
Write(String, Object[]) 使用与 String.Format 相同的语义写出格式化的字符串。 (继承自 TextWriter。)
Write(Char[], Int32, Int32) 将字符的子数组写入流。 (重写 TextWriter.Write(Char[], Int32, Int32)。)
Write(String, Object, Object) 使用与 String.Format 相同的语义写出格式化的字符串。 (继承自 TextWriter。)
Write(String, Object, Object, Object) 使用与 String.Format 相同的语义写出格式化的字符串。 (继承自 TextWriter。)
WriteLine() 将行结束符写入文本流。 (继承自 TextWriter。)
WriteLine(Boolean) 将后跟行结束符的 Boolean 的文本表示形式写入文本流。 (继承自 TextWriter。)
WriteLine(Char) 将后跟行结束符的字符写入文本流。 (继承自 TextWriter。)
WriteLine(Char[]) 将后跟行结束符的字符数组写入文本流。 (继承自 TextWriter。)
WriteLine(Decimal) 将后面带有行结束符的十进制值的文本表示形式写入文本流。 (继承自 TextWriter。)
WriteLine(Double) 将后跟行结束符的 8 字节浮点值的文本表示形式写入文本流。 (继承自 TextWriter。)
WriteLine(Int32) 将后跟行结束符的 4 字节带符号整数的文本表示形式写入文本流。 (继承自 TextWriter。)
WriteLine(Int64) 将后跟行结束符的 8 字节带符号整数的文本表示形式写入文本流。 (继承自 TextWriter。)
WriteLine(Object) 通过在对象上调用 ToString 将后跟行结束符的此对象的文本表示形式写入文本流。 (继承自 TextWriter。)
WriteLine(Single) 将后跟行结束符的 4 字节浮点值的文本表示形式写入文本流。 (继承自 TextWriter。)
WriteLine(String) 将后跟行结束符的字符串写入文本流。 (继承自 TextWriter。)
WriteLine(UInt32) 将后跟行结束符的 4 字节无符号整数的文本表示形式写入文本流。 (继承自 TextWriter。)
WriteLine(UInt64) 将后跟行结束符的 8 字节无符号整数的文本表示形式写入文本流。 (继承自 TextWriter。)
WriteLine(String, Object) 使用与 Format 相同的语义写出格式化的字符串和一个新行。 (继承自 TextWriter。)
WriteLine(String, Object[]) 使用与 Format 相同的语义写出格式化的字符串和一个新行。 (继承自 TextWriter。)
WriteLine(Char[], Int32, Int32) 将后跟行结束符的字符子数组写入文本流。 (继承自 TextWriter。)
WriteLine(String, Object, Object) 使用与 Format 相同的语义写出格式化的字符串和一个新行。 (继承自 TextWriter。)
WriteLine(String, Object, Object, Object) 使用与 Format 相同的语义写出格式化的字符串和一个新行。 (继承自 TextWriter。)

提示和注释

StreamWriter 旨在以一种特定的编码输出字符,而从 Stream 派生的类则用于字节的输入和输出。

StreamWriter 默认使用 UTF8Encoding 的实例,除非指定了其他编码。 UTF8Encoding 的实例不使用字节顺序标记 (BOM) 创建,因此它的 GetPreamble 方法返回一个空字节数组。 要使用 UTF-8 编码和 BOM 创建 StreamWriter,请考虑使用指定编码的构造函数,例如 StreamWriter(String, Boolean, Encoding)。

默认情况下,StreamWriter 不是线程安全的。 有关线程安全包装的信息,请参见 TextWriter.Synchronized。

有关通用 I/O 任务的列表,请参见通用 I/O 任务。

System.IO.StreamWriter 类例子

using 语句在使用它的代码完成后,将自动调用对象上的 Dispose。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace StreamReadWrite
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get the directories currently on the C drive.
            DirectoryInfo[] cDirs = new DirectoryInfo(@"c:\").GetDirectories();

            // Write each directory name to a file.
            using (StreamWriter sw = new StreamWriter("CDriveDirs.txt"))
            {
                foreach (DirectoryInfo dir in cDirs)
                {
                    sw.WriteLine(dir.Name);

                }
            }

            // Read and show each line from the file.
            string line = "";
            using (StreamReader sr = new StreamReader("CDriveDirs.txt"))
            {
                while ((line = sr.ReadLine()) != null)
                {
                    Console.WriteLine(line);
                }
            }
        }
    }
}

继承层次结构

System.Object

System.MarshalByRefObject

System.IO.TextWriter

System.IO.StreamWriter

命名空间

namespace: System.IO

程序集: mscorlib(在 mscorlib.dll 中)

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

版本信息

.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:

适用平台

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。