Search code examples
c#filefile-iomemorystream

How to open a file from Memory Stream


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 about how to write a MemoryStream to Disk?


Solution

  • 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.