.Net那点事儿系列:System.IO之Stream

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 22:05 点击:

 

Stream在msdn的定义:提供字节序列的一般性视图(provides a generic view of a sequence of bytes)。这个解释太抽象了,不容易理解;从stream的字面意思“河,水流”更容易理解些,stream是一个抽象类,它定义了类似“水流”的事物的一些统一行为,包括这个“水流”是否可以抽水出来(读取流内容);是否可以往这个“水流”中注水(向流中写入内容);以及这个“水流”有多长;如何关闭“水流”,如何向“水流”中注水,如何从“水流”中抽水等“水流”共有的行为。

 

常用的Stream的子类有:

 

1)MemoryStream 存储在内存中的字节流

 

2)FileStream  存储在文件系统的字节流

 

3)NetworkStream 通过网络设备读写的字节流

 

4)BufferedStream 为其他流提供缓冲的流

 

Stream提供了读写流的方法是以字节的形式从流中读取内容。而我们经常会用到从字节流中读取文本或者写入文本,微软提供了StreamReader和StreamWriter类帮我们实现在流上读写字符串的功能。

 

下面看下如何操作Stream,即如何从流中读取字节序列,如何向流中写字节

 

1. 使用Stream.Read方法从流中读取字节,如下示例注释:

 

view sourceprint?01 using System; 

 

02 using System.Collections.Generic; 

 

03 using System.Linq; 

 

04 using System.Text; 

 

05 using System.IO; 

 

06   

 

07 namespace UseStream 

 

08 { 

 

09     class Program 

 

10     { 

 

11         //示例如何从流中读取字节流 

 

12         static void Main(string[] args) 

 

13         { 

 

14             var bytes = new byte[] {(byte)1,(byte)2,(byte)3,(byte)4,(byte)5,(byte)6,(byte)7,(byte)8}; 

 

15             using (var memStream = new MemoryStream(bytes)) 

 

16             { 

 

17                 int offset = 0; 

 

18                 int readOnce = 4; 

 

19                   

 

20                 do

 

21                 { 

 

22                     byte[] byteTemp = new byte[readOnce]; 

 

23                     // 使用Read方法从流中读取字节 

 

24                     //第一个参数byte[]存储从流中读出的内容 

 

25                     //第二个参数为存储到byte[]数组的开始索引, 

 

26          

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • C#高级编程:数据库连接[1]
    • asp.net 设置GridView的选中行的实现代码
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET GridView列表代码示例
    • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1