将MemoryStream数组转换为fileStream C#
本文关键字:fileStream 转换 MemoryStream 数组 | 更新日期: 2023-09-27 18:22:35
我有一个函数正在返回MemoryStream数组,我想将这个内存流数组转换为FileStream对象。
如果可以的话,你能提供一种方法吗。。。
谢谢A.S
您不能"转换"流,因为MemoryStream
和FileStream
是非常不同的东西。但是,您可以将MemoryStream的全部内容写入一个文件。有一种CopyTo
方法可以用于此:
// memStream is the MemoryStream
using (var output = File.Create(filename)) {
memStream.CopyTo(output);
}
文件流对象将打开的文件(来自磁盘)表示为流。内存流将内存的一个区域(字节数组)表示为一个流。因此,您不能真正将内存流直接转换为文件流,至少不能简单地将转换为。
你可以采取两种方法:
-
OFFLINE:完全消耗内存流的内容,并将其全部写入磁盘上的文件;然后将该文件作为文件流打开
-
ONLINE:扩展FileStream类,创建一个适配器,该适配器将封装MemoryStream对象并将其公开为FileStream(本质上充当转换器)
其中一个被标记为[OFFLINE]的原因是,在将其输出到文件之前,您需要填充内存流的内容(一旦这样做,对文件流的修改将不会影响内存流;对内存流的更改(如新数据)也不会对文件流可用)
第二个标记为[ONLINE],因为一旦创建适配器并从MemoryStream初始化FileStream对象,就可以使用FileStream适配器对象处理MemoryStream中的任何新数据。您基本上可以使用文件流作为内存流之上的层来读取/写入和查找内存流。大概,这就是你想要做的。
当然,这取决于你需要做什么,但我倾向于第二个[在线]版本,认为它在一般意义上更好。