Stream、FileStream、MemoryStream的区别
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的区别的更多相关文章
- stream~filestream
http://blog.csdn.net/feliciafay/article/details/6157356 http://blog.csdn.net/feliciafay/article/deta ...
- Stream转MemoryStream解决Stream.Length报错此流不支持查找操作
1.StreamToMemoryStream MemoryStream StreamToMemoryStream(Stream instream) { MemoryStream outstream = ...
- stream,file,filestream,memorystream简单的整理
一.Stream 什么是stream?(https://www.cnblogs.com/JimmyZheng/archive/2012/03/17/2402814.html#no8) 定义:提供字节序 ...
- File,FileInfo,FileStream,StreamReader的区别与用法
概括的说,File,FileInfo,FileStream是用于文件 I/O 的类,StreamReader是用于从流读取和写入流的类,使用之前都需using System.IO. 先定义一个TXT文 ...
- C# FileStream MemoryStream BufferedStream StreamReader StreamWriter
FileStream读取文件 , array.Length);//读取流中数据把它写到字节数组中file.Close();//关闭流string str =Encoding.Default.GetSt ...
- Java 8里 Stream和parallelStream的区别
Java中Stream和parallelStream,前者是单管,后者是多管,运行时间上做一个小对比,直接上代码: /** * * @author zhangy6 * <p>对比Strea ...
- .NET中的流
当应用程序需要和磁盘上的文件打交道的时候,就有了流的概念.流就像架设在应用程序所在内存和磁盘之间的一个管道. 大致思路 → 建立管道 //FileMode.Open打开现有文件,另外还有FileMod ...
- BufferHelp byte[] Stream string FileStream Image Bitmap
/******* * *** ***** ** ** * * * * * * * * ***** * * * * * * * * * * * * * * * ******* *** * ***** * ...
- MemoryStream和FileStream
一,FileStream对象的数据来自文件,而MemoryStream对象的数据来自内存缓冲区.这两个类都继承自Stream类. 二,抽象基类System.IO.Stream代表流,它提供Read和W ...
随机推荐
- automake - 使用 autotools 工具集
一般而言,对于小项目或玩具程序,手动编写 Makefile 即可.但对于大型项目,手动编写维护 Makefile 成为一件费时费力的无聊工作. 本文介绍 autotools 工具集自动生成符合 Lin ...
- adaboost-笔记(1)
1 - 加法模型 加法模型,就是通过训练集不断的得到不同的分类器(回归),然后将这些分类器组合成一个新的分类器的过程. 假设有\(N\)个样本,且我们的加法模型如下: \[f(x)=\sum_{m=1 ...
- SVM-笔记(1)
1 目的 SVM推导是从讨论最优超平面开始的,即为了得到一个能够划分不同超平面的面,即公式1: \begin{equation}w^Tx+b=0 \tag{1} \end{equation} 这个公式 ...
- handsontable-chosen-editor
https://github.com/mydea/handsontable-chosen-editor handsontable-chosen-editor是handsontable column的扩 ...
- 关于学习JAVA第二章的心得
这章主要讲了JAVA的变量,数据类型和运算符的使用方法及规则. 其实在大一的时候接触过一点C和C++的知识所以对变量,数据类型,运算符还是有一定了解的. 变量其实就是存储数据的空间.我们每次使用某一种 ...
- 深入浅出:5G和HTTP
本文将会讲到5G和HTTP.曾经在深入浅出经典面试题:从浏览器中输入URL到页面加载发生了什么 - Part 3 提到为什么有些RPC框架不选用HTTP,而5G会采用HTTP. 您可以从本文里获取到一 ...
- Ansible 简介
Ansible 是一个开源的基于 OpenSSH 的自动化配置管理工具.可以用它来配置系统.部署软件和编排更高级的 IT 任务,比如持续部署或零停机更新.Ansible 的主要目标是简单和易用,并且它 ...
- 【C#复习总结】探究各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字
前言 先普及一下线程安全和类型安全 线程安全: 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的 ...
- 基于Tornado签名cookie源码设计API认证
想法1 服务端客户端个保存相同的一串字符串,客户端发送API请求时带着这段字符串来我服务端做校验,通过则返回相应数据,否则拒绝访问 弊端 黑客截取到请求信息,可直接会获取到该字符串,想服务端发送请求并 ...
- 通过this()调用有参构造方法
使用原因:在通过无参构造方法实例化对象时,如果有属性可以设置默认值,可通过在无参构造方法中使用this()调用有参构造方法实现. this()需要写在无参构造方法的第一行! 例子:在没有给出小猫的名字 ...