在学习字符数据流之前,看一个例子,在定义时不同的构造构造方法会出现不同的结果:
.
正题 :字符数据流的结构:
TextReader与TextWriter类是抽象类,其基本方法与Stream类相似。
它们的主要区别在于:TextReader与TextWriter通过特定字符集编码方式转换成字节数据,完成字符数据的存取。
一、TextReader与TextWriter类
读写文本数据的基类是TextReader与TextWriter类。
这两个抽象类定义了从数据流或文本字符串中读写的基本功能,如Read、Peek等,与Stream类类似,差异是读取的是
字符串,而不是字节。
TextReader的方法有:Read、ReadLine、ReadToEnd
TextWriter的方法有:Writer、WriterLine
比如:
二、创建StreamReader对象
TextReader派生出StreamReader类,StreamReader从派生于Stream类的子类中读取数据。
StreamReader构造有根据基础流Stream来构造、根据文件名来构造:
StreamReader.BaseStream.Length
对于汉字情况,请选择Encoding.Default试试
三、StreamReader属性
BaseStream 返回基础流。
CurrentEncoding 获取当前 StreamReader 对象正在使用的当前字符编码。
EndOfStream 获取一个值,该值表示当前的流位置是否在流的末尾。(True/False)
四、StreamReader常用方法
读取文本文件中最常见的是: ReadLine、ReadToEnd、Peek、Read。
五、StreamWriter类
StreamWriter与StreamReader对应。创建对象时一样:由流或文件名来创建
1、构造:
StreamWriter(Stream)
用 UTF-8 编码及默认缓冲区大小,为指定的流初始化 StreamWriter 类的一个新实例。
StreamWriter(String)
用默认编码和缓冲区大小,为指定的文件初始化 StreamWriter 类的一个新实例。
StreamWriter(Stream, Encoding)
用指定的编码及默认缓冲区大小,为指定的流初始化 StreamWriter 类的新实例。
StreamWriter(String, Boolean)
用默认编码和缓冲区大小,为指定的文件初始化 StreamWriter 类的一个新实例。 如果该文件存在,
则可以将其覆盖或向其追加。 如果该文件不存在,则此构造函数将创建一个新文件。
2、写入方法:
主要有两个:Write、 WriterLine
还有一个隐形的Flush,清理当前编写器的所有缓冲区,并使所有缓冲数据写入基础流。
具体如:
Public Sub Writer(ByVal buffer() as Char)
Public Sub Writer(byVal buffer() as Char,ByVal index As Integer,Byval count As Integer)
Public Sub Writer(ByVal value As String)
六、StringReader与StringWriter
它是以字符串为数据源,前面的是以Stream为数据源。
所以构造方法是以字串:
Public Sub New(ByVal s As String)
Public Sub New (ByVal sb as StringBuilder)
同前面的StreamReader、StreamWriter一样,
StringReader的方法有:Peek、Read、ReadLine、ReadToEnd
StringWriter的方法有:Writer、WriterLine
唯一不同的,取是基础流的是用:GeStringBuilder 它返回数据源(前面是用BaseStream)
以一个例子结束吧:
联系客服