Как открыть файл из Memory Stream - PullRequest
5 голосов
/ 04 июня 2011

Можно ли открыть файл непосредственно с MemoryStream, в отличие от записи на диск и выполнения Process.Start()? Конкретно PDF-файл? Если нет, я думаю, мне нужно записать MemoryStream на диск (что немного раздражает). Может ли кто-то тогда указать мне на ресурс о том, как записать MemoryStream на диск?

Ответы [ 3 ]

7 голосов
/ 04 июня 2011

Это зависит от клиента :), если клиент примет ввод со стандартного ввода, вы можете передать dta клиенту.Другая возможность может состоять в том, чтобы написать сервер именованных каналов или сервер сокетов - не тривиально, но это может сработать.

Однако самый простой вариант - просто взять временный файл и записать в него (и удалитьпотом).

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

Не забудьте очистить файл, когда закончите.

1 голос
/ 06 января 2016

Path.

0 голосов
/ 04 июня 2011

Если, открывая файл, вы имеете в виду что-то вроде запуска Adobe Reader для PDF-файлов, тогда да, вы должны записать его в файл.То есть, если приложение не предоставляет вам некоторый API, сделайте это.

Один из способов записать поток в файл:

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