将MemoryStream数组转换为fileStream C#

时间:2012-02-06 15:41:02

标签: c# c#-4.0 filestream memorystream

我有一个返回MemoryStream数组的函数,我想将这个内存流数组转换为FileStream对象。

如果可以,请你提供一种方法吗?

由于 A.S

2 个答案:

答案 0 :(得分:2)

您无法“转换”流,因为MemoryStreamFileStream是完全不同的东西。但是,您可以将MemoryStream的全部内容写入文件。您可以使用CopyTo方法:

// memStream is the MemoryStream
using (var output = File.Create(filename)) {
    memStream.CopyTo(output);
}

答案 1 :(得分:0)

文件流对象表示作为流的打开文件(来自磁盘)。存储器流表示作为流的存储器区域(字节阵列)。所以你无法真正将内存流直接转换为文件流 - 至少不是琐事

您可以采取两种方法:

  1. OFFLINE :完全使用内存流的内容并将其全部写入磁盘上的文件;然后将该文件作为文件流打开

  2. ONLINE :扩展FileStream类创建一个适配器,它将包装一个MemoryStream对象并将其作为FileStream公开(基本上充当转换器)

  3. 将一个标记为[OFFLINE]的原因是因为在将其输出到文件之前需要获取内存流的完整内容(一旦这样做,对文件流的修改不会影响内存流;也不会内存流的更改(例如新数据)可用于文件流)

    第二个标记为[ONLINE],因为一旦创建了适配器并从MemoryStream初始化FileStream对象,就可以使用FileStream适配器对象处理MemoryStream中的任何新数据。基本上,您可以使用文件流作为内存流之上的层来读取/写入和搜索内存流。据推测,这就是你想要做的......

    当然,这取决于你需要做什么,但我倾向于第二个[在线]版本,因为在一般意义上更好。