类似于System.Diagnostics.Process.Start来运行流

时间:2010-05-27 10:08:30

标签: c# filestream

我从流中获取服务器图像和视频。 现在我正在保存它:

 Stream str = client.GetFile(path);
                    using (var outStream = new FileStream(@"c:\myFile.jpg", FileMode.Create))
                    {
                        var buffer = new byte[4096];
                        int count;
                        while ((count = str.Read(buffer, 0, buffer.Length)) > 0)
                        {
                            outStream.Write(buffer, 0, count);
                        }
                    }

我可以是jpg,mpg,flv和许多其他多媒体类型(在我获得流之前我知道这个文件的扩展名是什么)。

现在我想不保存它,但是从流直接运行。

示例:

我得到的是mybirthay.avi的流,我调用了我的方法RunFile(stream),我认为这个方法应该像System.Diagnostics.Process.Start(path)一样工作,所以我的流应该在我的默认程序中打开例如,所有玩家。

我从myfile.jpg获取流,并由irfanview打开,

等...

有可能吗?

2 个答案:

答案 0 :(得分:2)

如果您设置为不将流保存到磁盘,则可以使用Eldos的回调文件系统:http://www.eldos.com/cbfs/

或者,使用ramdisk,将流保存在那里,然后shell到该文件位置。

答案 1 :(得分:1)

Windows在进程之间设置了一道墙,因此它们无法直接访问彼此的内存,而无需通过类似ReadProcessMemory的特权类调试API函数。这是保持操作系统稳定和安全的原因。但是对于你想要完成的事情来说,法术已经毁灭了。

您需要使用文件。它不会比直接内存访问慢得多,文件系统缓存会解决这个问题。