博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Stream、FileStream、MemoryStream的区别
阅读量:4947 次
发布时间:2019-06-11

本文共 1504 字,大约阅读时间需要 5 分钟。

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;

转载于:https://www.cnblogs.com/xiechunjian/p/7116584.html

你可能感兴趣的文章
P3565 [POI2014]HOT-Hotels
查看>>
UVa11078:Open Credit System
查看>>
MongoDB的简单使用
查看>>
git clone 遇到的问题
查看>>
hdfs 命令使用
查看>>
hdu 1709 The Balance
查看>>
prometheus配置
查看>>
react native props state 網絡請求 native組件等一些基礎知識
查看>>
定宽320 缩放适配手机屏幕
查看>>
BZOJ 2120 数颜色 【带修改莫队】
查看>>
【noip2004】虫食算——剪枝DFS
查看>>
Codeforces 40 E. Number Table
查看>>
CLR via C#(第3 版)
查看>>
java语法之final
查看>>
关于响应式布局
查看>>
详解ASP.Net 4中的aspnet_regsql.exe
查看>>
python 多进程和多线程的区别
查看>>
hdu1398
查看>>
[android] 网络断开的监听
查看>>
156.Binary Tree Upside Down
查看>>