第九天 - 文件输入输出 笔记

Stream抽象类

Stream派生类型吧数据表现为原始的字节流。

抽象Stream成员
成员作用
CanRead、CanWrite和CanSeek检测当前流是否支持读、寻址和写
Close()关闭当前流并释放与之关联的所有资源
Flush()使用当前的缓冲状态更新基层的数据源或存储库。如果流不实现缓冲,这个方法什么都不做
Length返回流的长度,以字节来表示
Position检测在当前流中的位置
Read()和ReadByte()从当前流读取字节序列,并将此流中的位置偏移读取的字节数
Seek()设置当前流中的位置
SetLength()设置当前流的长度
Write()和WriteByte()向当前流中写入字节序列,并将此流中的当前位置偏移写入的字节数

FileStream

FileStream类是一个相当原始的流(字节流),它只能读取或写入一个字节或者字节数组。
写入文件:

string msg = "Hello";
byte[] msgAsByteArray = Encoding.Default.GetBytes(msg);
fStream.Write(msgAsByteArray,0,msgAsByteArray.Length);

读取文件:

fStream.Position = 0;
byte[] bytesFromFile = new byte[msgAsByteArray.Length];
fStream.Read(bytesFromFile,0,bytesFromFile.Length);

总结:使用FileStream进行读写,要注意流内部的位置,并且用Read方法时,读取字节数可能会超出流的长度,还要需要使用Encoding中的方法将字节转换成String。

StreamWriter和StreamReader

读写基于字符的数据
StreamReader和StringReader一样,它们都从TextReader抽象类型派生。
Streamwriter和StringWriter一样,从TextWriter抽象类型派生。

TextWriter核心成员
成员作用
Close()关闭当前编写器并释放任何与该编写器关联的系统资源。在这个过程中,缓冲区将被自动清理
Flush()清理当前编写器的所有缓冲区,使所有缓冲数据写入基础设置,但是不关闭编写器
NewLine代表派生的编写器类的行结束符字符串。默认行结束符字符串是回车符后接一个换行符
Write()这个重载的方法将一行写入文本流,不跟行结束符
WriteLine()这个重载的方法将一行写入文本流,后跟行结束符
TextReader主要成员
成员作用
Peek()返回下一个可用字符,而不更改读取器位置。返回-1表示已经到了流的尾部
Read()从输入流中读取数据
ReadBlock()从当前流红读取最大计数字符,并从索引开始将该数据写入缓冲区
ReadLine()从当前流中读取一行字符,并将数据作为字符串返回
ReadToEnd()读取从当前位置到流结尾的所有字符,并将它们作为一个字符串返回

写入文本:

using(StreamWriter sw = File.CreateText("reminders.txt"){
    sw.WriteLine(".....");
}

读取文本:

using(StreamReader sr = File.OpenText("reminders.txt"){
   string input = null;
   while( (input = sr.ReadLine()) != null)
       Console.WriteLine(input);
}

注意:也可以直接创建StreamWriter/StreamReader类型( using(StreamWriter sw = new StreamWriter(“reminders.txt”)) )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值