2012-03-31 26 views
5

Quería utilizar la clase FileStream para evitar guardar cualquier archivo en la computadora del cliente . Pero cada constructor de FileStream requiere una ruta a un archivo.Uso de FileStream sin un archivo real

¿Cómo puedo crear un FileStream desde una transmisión y no tener que guardarlo en el disco duro?

EDIT: Ya estoy usando memorystream para almacenar mi información. Pero en algún momento necesito comprimir los archivos en OTRA CORRIENTE. El problema es que los comandos zip (he buscado en GZipStream - Comprime los ARCHIVOS en una CORRIENTE) me requieren un source filePath (FileStream).

Si no puedo superar la creación de un FileStream a partir de una secuencia, ¿hay alguna otra manera de comprimir las secuencias?

+0

FileStream IS para escribir en un archivo, use MemoryStream en su lugar – Reniuz

+0

Es completamente incorrecto decir que GZipStream procesa * archivos *. No es asi. Procesa un byte-stream y no le importan los archivos de ningún tipo. Necesita explicar su escenario más, tal vez mostrando exactamente el código que quiere un archivo. Puede usar GZipStream para trabajar con fuentes/destinos arbitrarios. Realmente necesitas explicar a qué te estás atascando. Si "buscó en GZipStream" y llegó a esa conclusión, entonces parecía equivocado. –

Respuesta

9

En este caso, solo debe usar un MemoryStream, y asegúrese de que su API solo exige Stream en lugar de FileStream específicamente. Por ejemplo:

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

alternativa usted puede seguir usando FileStream mediante el uso de un archivo en la zona temporal, a través de Path.GetTempFileName().

1

Puede usar otros tipos de Stream (como MemoryStream) o derivar su propia clase de FileStream que no hará nada (o escribir donde lo necesite).

0

FileStream funciona con archivos. No puedes cambiar este comportamiento.

Puede consultar otras * Clases Stream heredadas de System.IO.Stream como MemoryStream.

Cuestiones relacionadas