今天遇到了 MemoryStream这个 流操作
百度了一下 简单区别了一下和FileStream的区别:
简单介绍一下MemoryStream
MemoryStream是内存流,为系统内存提供读写操作,由于MemoryStream是通过无符号字节数组组成的,可以说MemoryStream的性能可以
算比较出色,所以它担当起了一些其他流进行数据交换时的中间工作,同时可降低应用程序中对临时缓冲区和临时文件的需要,其实MemoryStream
的重要性不亚于FileStream,在很多场合我们必须使用它来提高性能
MemoryStream和FileStream的区别
前文中也提到了,FileStream主要对文件的一系列操作,属于比较高层的操作,但是MemoryStream却很不一样,它更趋向于底层内存的操作,这样
能够达到更快的速度和性能,也是他们的根本区别,很多时候,操作文件都需要MemoryStream来实际进行读写,最后放入到相应的FileStream中,
不仅如此,在诸如XmlWriter的操作中也需要使用到MemoryStream提高读写速度
于是 我就举个给大家 也是比较常用的 就是MemoryStream导出 Excel文件
filestream需要头文件system.IO;
主要代码是:
SaveFileDialog save = new SaveFileDialog();
save.Filter = “EXCEL|*.xls”;
if (save.ShowDialog() == DialogResult.OK)
{
save.RestoreDirectory = true;
string fileName = save.FileName;
DataTable table = dy.copy(); //dy是table类型且有内容的表
saveTofle(RenderToExcel(table, “sdf”), fileName);
} //RenderToExcel(table, "sdf")返回的是MemoryStream类型
private void saveTofle(MemoryStream file,string fileName)
{
using (FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[] buffer = file.ToArray();//转化为byte格式存储
fs.Write(buffer, 0, buffer.Length);
fs.Flush();
buffer = null;
}//使用using可以最后不用关闭fs 比较方便
}
接下里就是RenderToExcel函数
需要头文件
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
代码是:
public static Memo