从字节数组打开文件

Ami*_*esh 11 .net c# file

我在我的应用程序中存储附件.

这些作为varbinary类型存储在SQL中.

然后我把它们读成了byte[]对象.

我现在需要打开这些文件,但不想先将文件写入磁盘然后打开使用Process.Start().

我想打开使用内存流.在.net中有没有办法解决这个问题.请注意,这些文件可以是任何类型

The*_*est 12

您可以在不使用Streams的情况下将所有字节写入文件:

System.IO.File.WriteAllBytes(path, bytes);
Run Code Online (Sandbox Code Playgroud)

然后使用

Process.Start(path);
Run Code Online (Sandbox Code Playgroud)

试图从内存中打开文件是不值得的结果.真的,你不想这样做.

  • 提问者已经表示他不想这样做. (4认同)

Ran*_*pho 8

MemoryStream有一个构造函数,它接受一个Byte数组.

所以:

var bytes = GetBytesFromDatabase(); // assuming you can do that yourself
var stream = new MemoryStream(bytes);

// use the stream just like a FileStream
Run Code Online (Sandbox Code Playgroud)

这应该是诀窍.

编辑:噢,废话,我完全错过了这Process.Start部分.我正在改写......

编辑2:

你不能做你想做的事.您必须从文件中执行进程.你必须写入磁盘; 或者,这个问题的答案有一个非常复杂的建议可能有效,但可能不值得努力.