C#流(stream)

来源:互联网 发布:华为云计算大会2016 编辑:程序博客网 时间:2024/06/06 03:17

Stream类提供了一个字节序列的一般视图

 

通俗的讲:

 

stream就像是一条大路的一座桥,桥上过的车都是 byte型的,stream进行read的时候是把桥上的bytes接过来,
 
write的时候是把bytes送到桥上去等对方接收。
 

流用于对IO处理 

在System.IO名称空间中有以下类 

BinaryReader/Writer 

TextReader/Writer 

Stream 

其中类Stream为抽象类。由此有三个派生类: 

MemoryStream:对内存进行读取与写入 

BufferedStream:对缓冲器进行读取/写入 

FileStream:对文件执行读取与写入 

TextReader/Writer为抽象类。由此派生类: 

StreamReader/StreamWirter 

StringReader/StreamWriter 

需要引入命名空间: 

using System.IO 


案例一: 

内存流与缓冲的使用举例: 

MemoryStream memStream=new MemoryStream(); 

BufferedStream bufStream=new BufferedStream(memStream); 

byte[] b=new byte[10]; 

for(int i=0;i<10;i++) 



    bufStream.WriteByte((byte)i); 



bufStream.Position=0; 

bufStream.Read(b,0,9); 

for(int i=0;i<10;i++) 



   Console.WriteLine("读的值是:{0}",b[i]); 



Console.WriteLine("值是:{0}",bufStream.ReadByte()); 

Console.ReadLine(); 



案例二: 

文件流的使用 

string s=Console.ReadLine(); 

FileStream fileStream=new FileStream(s,FileMode.OpenOrCreate); 

BinaryWriter binStream=new BinaryWriter (fileStream); 

for(int i=1;i<=10;i++) 



    binStream.Write((int)i); 



binStream.Close(); 

fileStream.Close(); 

FileStream f=new FileStream(s,FileMode.Open,FileAccess.Read,FileShare.ReadWrite); 

BinaryReader buf=new BinaryReader(f); 

for(int i=1;i<10;i++) 



     Console.WriteLine("输出{0}",buf.ReadByte ()); //在vs2012中这样不能读出东西来

     Console.WriteLine("输出{0}",Bur.ReadInt32());才行,因为int是32位的

}

 


案例三 

文本流的使用 

string fileName,s; 

fileName=Console.ReadLine(); 

StreamWriter fn=new StreamWriter(fileName,true); 

for(int i=1;i<10;i++) 



     s=Console.ReadLine(); 

     fn.WriteLine(s); 



fn.Close(); 

StreamReader fr=new StreamReader(fileName); 


for(int i=1;i<10;i++) 



     s=fr.ReadLine(); 

     Console.WriteLine(s); 



fr.Close(); 

Console.ReadLine(); 


案例四: 

字符串流的使用 

using System.Text; 

StringBuilder str=new StringBuilder(100,1000); 

StringWriter sw=new StringWriter(str); 

for(int i=1;i<5;i++) 



     sw.Write(Console.ReadLine()); 



sw.Close(); 

Console.WriteLine(sw.ToString()); 

StringReader sr=new StringReader(sw.ToString()); 

Console.WriteLine(sr.ReadLine()); 

Console.ReadLine();

原创粉丝点击