Stream之Streamwriter&StreamReader
**
一.什么是Stream?
**
stream提供字节序列的一般视图,是一个抽象类,是所有流的抽象基类。提供了以字节的形式从流中读取写入内容的方法。其中streamWriter和StreamReader为我们提供了从流中读取写入字符串的方法。
二.常用的stream的子类:
Memorystream:存储在内存的字节流
FileStream:存储在文件系统的字节流
BufferedStream:为其他流提供缓冲的流
三.Stream的基本属性以及方法:
四.TextReader:
表示可以读取有序字符序列的读取器,抽象类,不能直接被实例化。
同时实现了IDidposable借口可以使用using进行释放,StreamReader以及stringReader都派生于他,StreamReader从流中读取字符,Stringreader从字符串中读取字符。
相关的方法
close():可关闭TextReader并且关闭与他相关的所有系统资源
Dispose():可以关闭与他相关的所有的系统资源
Peek():读取下一个字符而不更改读取器的状态或字符源。
Read():读取下一个字符并将该字符的字符w气质提升一个字符
ReadAsync():异步读取
…
五.streamReader的简单使用:
①:读取:
public void static TextReaderEx(){|
string path=@"d:\abc\a.txt";
TextReader reader=new StreamReader(path,Encoding.UTF8);
string Line=reader.ReadLine();
while(line!=null){
Console.WriteLine(ss);
line=reader.ReadLine();
}
//reader.Read(); 读取下一个字符并将指针指向下一个字符
//reader.peek(); 读取下一个字符但是指针不动
reader.close();
}
六.Streamwriter的简单使用
①.基本介绍:以一种特定的编码向流中写入字符。
默认情况下不是线程安全的
②.方法:Close() dispose() Flush() [清理当前编写器的所有缓冲区] Write()[将字符写入文本流] WriteLine() [将字符写入文本流,并跟上终止符,也就是换行] 注意我们的音频视频是使用字节流进行读取写入的使用字符流进行复制写入不可以播放。
③.基本使用:
StreamWriter writer =new StreamWriter(string Path,bool append);
StreamWriter writer =new StreamWriter(string Path,bool append,Encoding encoding);
StreamWriter writer =new StreamWriter(string Path,bool append,Encoding encoding,int BufferSize);
//其中这里的布尔类型的append参数指定的是是否进行追加当文件存在的时候,如果为否的话当文件存在的时候将进行覆盖文件不存在的时候将进行创建,int类型的BufferSize参数指的是指定缓冲区的大小
//基本使用:
string Path=@"d:\test\test.txt";
StreamWriter sw=new StreamWriter(path,true,Encoding.UTF8);
sw.write("随便写点什么");
sw.WriteLine("在说一句吧");
sw.Write(sw.NewLine); //写入换行符
sw.Write(123456);
sw.Close(); //关闭流
sw.Dispose(); //释放资源
//使用Using进行资源的释放,因为我们的streamWriter实现了IDispose借口所以我们可以通过using进行资源的释放
using(StreamWriter sw =new StreamWriter(path,true)){
//进行写入的操作
}
③.使用读写流实现简单的文件的1复制
string path=@"d:\test1\test1.txt";
byte buffer=new byte[1024];
using(StreamReader sr =new StreamReader(path)){
using(StreamWriter sw=new StreamWriter(@"d:\test2\test2.txt")){
while(true){
int count=sr.read(buffer,0,buffer.length);
if(count=0) break;
sw.Write(buffer,0,buffer.length);
}
}
}
七.理解与总结:
今天我们介绍的是IO中的Streamwriter和streamWriter在我们日常进行工作的时候基本是不会使用这些底层的读写流的,因为不仅效率不高并且线程不安全,但是我们一定要知道的事任何框架或者工具都是基于这些底层的东西进行封装的,所以这些知识我们也是一定要了解的,下面我们将会介绍其他几种流极其使用场景。
***每天进步一点点,做最好的自己!ovo ***