2011-06-04 20 views
5

MemoryStreamから直接ファイルを開いて、ディスクに書き込むのではなく、Process.Start()を開くことはできますか?特にPDFファイルですか?そうでなければ、MemoryStreamをディスクに書き込む必要があると思います(これは厄介なものです)。誰かがディスクにMemoryStreamを書き込む方法について私にリソースを教えてもらえますか?メモリストリームからファイルを開く方法

+0

(James - 私は私の答えから4.0の依存関係を削除しました) –

答えて

7

クライアントによって異なります。クライアントが標準入力からの入力を受け入れる場合は、をクライアントにプッシュします。もう1つの可能性は、名前付きパイプサーバーまたはソケットサーバーを書くことです(簡単なことではありませんが、うまくいく可能性があります)。

ただし、最も簡単なオプションは、一時ファイルを取得してそれに書き込むことです(あとで削除してください)。

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

完了したら、ファイルをクリーンアップしてください。

+0

またはWriteToを使用してください(4.0以外の場合) – Magnus

+0

@Magnus - 削除しました。私はMemoryStreamからバックバッファを使用できることに気づいた –

0

ファイルを開くことによって、Adobe ReaderをPDFファイルとして起動する場合は、ファイルに書き込む必要があります。つまり、アプリケーションがあなたにいくつかのAPIを提供しない限り、そうします。ファイルへのストリームを書き込むための

一つの方法は、次のようになります。

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

Path.GetTempFileName()「の.tmp」拡張子を持つファイル名を返し、したがって、あなたが必要とするProcess.Start()を使用cant't拡張子を使ったWindowsファイルの関連付け。

関連する問題