开发者

How to open a file from Memory Stream

开发者 https://www.devze.com 2023-03-10 15:12 出处:网络
Is it possible to open a file directly from a MemoryStream opposed to writing to disk and doing Process.Start() ? Specifically a pdf file? If not, I guess I need to write the MemoryStream to disk (whi

Is it possible to open a file directly from a MemoryStream opposed to writing to disk and doing Process.Start() ? Specifically a pdf file? If not, I guess I need to write the MemoryStream to disk (which is kind of annoying). Could someone then point me to a resource abou开发者_如何转开发t how to write a MemoryStream to Disk?


It depends on the client :) if the client will accept input from stdin you could push the dta to the client. Another possibility might be to write a named-pipes server or a socket-server - not trivial, but it may work.

However, the simplest option is to just grab a temp file and write to that (and delete afterwards).

var file = Path.GetTempFileName();
using(var fileStream = File.OpenWrite(file))
{
    var buffer = memStream.GetBuffer();
    fileStream.Write(buffer, 0, (int)memStream.Length);
}

Remember to clean up the file when you are done.


Path.GetTempFileName() returns file name with '.tmp' extension, therefore you cant't use Process.Start() that needs windows file association via extension.


If by opening a file, you mean something like starting Adobe Reader for PDF files, then yes, you have to write it to a file. That is, unless the application provides you with some API do that.

One way to write a stream to file would be:

using (var memoryStream = /* create the memory stream */)
using (var fileStream = File.OpenWrite(fileName))
{
    memoryStream.WriteTo(fileStream);
}
0

精彩评论

暂无评论...
验证码 换一张
取 消