码迷,mamicode.com
首页 > 其他好文 > 详细

Stream、FileStream、MemoryStream的区别

时间:2018-12-24 13:25:45      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:close   定义   write   访问   mem   UNC   打开   缓存   strong   

1.Stream:流,在msdn的定义:提供字节序列的一般性视图,Stream提供了读写流的方法是以字节的形式从流中读取内容。而我们经常会用到从字节流中读取文本或者写入文本,微软提供了StreamReader和StreamWriter类帮我们实现在流上读写字符串的功能。

2.FileStream:文件流,继承Stream。一个FileStream类的实例实际上代表一个文件流,使用FileStream类可以对文件系统上的文件进行读取、写入、打开和关闭操作。

public class FileStream : Stream
{

}
public FileStream(string path, FileMode mode, FileAccess access);
path指明文件所在的路径信息;
mode是FileMode的枚举值,表示文件打开或创建的方式
CreateNew:指定操作系统应创建新文件,如果文件已经存在,则引发IOException;
?Create:指定操作系统应创建新文件,如果文件已经存在,它将被覆盖;
?Open:指定操作系统应打开现有文件,如果文件不存在,则引发FileNotFoundException;
?OpenOrCreate:指定操作系统应打开文件,如果文件不存在,则创建新文件;
?Truncate:指定操作系统应打开现有文件,文件一旦打开,就将截断为零字节大小;
?Append:打开先有文件并把Position设置至文件尾,如果文件不存在将创建新文件。Append只能同FileAccess.Write一起使用

access是FileAccess的枚举值,它控制对文件的访问权限
?Read:打开文件用于只读;
?Write:打开文件用于只写;
?ReadWrite:打开文件,用于读写;

//创建新文件
FileStream fileStream = new FileStream(@"d:\test.txt", FileMode.Create);

//读取
FileStream fileStream= new FileStream(@"d:\test.txt", FileMode.Open);

FileStream fs=File.OpenRead(@"c:\file.txt"); //这样是返回只读文件流。

 

3.MemoryStream:和文件流不同,MemoryStream类表示的是保存在内存中的数据流,由内存流封装的数据可以在内存中直接访问。内存一般用于暂时缓存数据以降低应用程序对临时缓冲区和临时文件的需要。

 

相关用法:

     MemoryStream ms = new MemoryStream();
     byte[] buffer = new byte[stream.Length];
     stream.Position = 0;
     int arrbyte = stream.Read(buffer, 0, buffer.Length);
     ms.Write(buffer, 0, arrbyte);

     FileStream fs = new FileStream(HttpContext.Current.Server.MapPath(FilePath), FileMode.Create);

      //写入流文件
      ms.WriteTo(fs);

     //释放内存      
     ms.Close();
      fs.Close();
      fs = null;
      ms = null;

Stream、FileStream、MemoryStream的区别

标签:close   定义   write   访问   mem   UNC   打开   缓存   strong   

原文地址:https://www.cnblogs.com/qqhfeng/p/10167989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!