2012-03-31 5 views
5

Volevo utilizzare la classe FileStream per evitare di salvare qualsiasi file sul computer del client . Ma ogni costruttore di FileStream richiede un percorso in un file.Utilizzo di FileStream senza un file effettivo

Come si crea un FileStream da uno streaming e non è necessario salvarlo sul disco rigido?

MODIFICA: Sto già utilizzando memorystream per memorizzare le mie informazioni. Ma a un certo punto ho bisogno di comprimere i file in ANOTHER STREAM. Il problema è che i comandi zip (che ho cercato in GZipStream - Zips FILES su STREAM) richiedono una fonte filePath (FileStream).

Se non riesco a sorpassare creando un File Stream da uno stream, esiste un altro modo per comprimere i flussi?

+0

FileStream IS per scrivere su file, utilizzare MemoryStream invece – Reniuz

+0

Non è corretto affermare che GZipStream elabora * file *. Non è così. Elabora un flusso di byte e non si preoccupa dei file di sorta. Devi spiegare di più il tuo scenario, magari mostrando esattamente il codice che vuole un file. Puoi usare GZipStream per lavorare con fonti/destinazioni arbitrarie. Hai davvero bisogno di spiegare su cosa ti stai bloccando. Se hai "guardato in GZipStream" e hai raggiunto questa conclusione, allora hai guardato male. –

risposta

9

In questo scenario, è sufficiente utilizzare uno MemoryStream e assicurarsi che l'API richieda specificamente lo Stream anziché FileStream. Per esempio:

using(var ms = new MemoryStream()) { 
    YourCode(ms); 
} 

In alternativa è possibile continuare a utilizzare FileStream utilizzando un file nella zona di temperatura, tramite Path.GetTempFileName().

1

È possibile utilizzare altri tipi di flusso (come MemoryStream) o derivare la propria classe da FileStream che non eseguirà nulla (o scrivere ovunque sia necessario).

0

FileStream funziona con i file. Non puoi cambiare questo comportamento.

È possibile controllare altre * classi Stream ereditate da System.IO.Stream come MemoryStream.