2011-06-03 22 views
18

He visto este término pero no entiendo cómo se abre un archivo en la memoria.¿Cómo abrir un archivo en la memoria?

Tengo los archivos escritos en el disco en una ubicación temporal, pero esto necesita limpieza cuando se cierra cierto formulario y no puedo hacerlo cuando está abierto. Es imprescindible que esta carpeta se vacíe. Me preguntaba si, en cambio, si abrí archivos en memoria, ¿marcaría la diferencia?

+1

Depende completamente de lo que esté haciendo. – SLaks

+0

tengo las miniaturas mostradas a la derecha: el usuario hace doble clic en una y abre el archivo pdf. – rik

Respuesta

41
MemoryStream inMemoryCopy = new MemoryStream(); 
using (FileStream fs = File.OpenRead(path)) 
{ 
    fs.CopyTo(inMemoryCopy); 
} 
// Now you can delete the file at 'path' and still have an in memory copy 
+0

Deténgalo, estamos usando .NET 3.5 y como tal no puedo usar fs.copyto – rik

+0

usted mismo puede replicar fácilmente ese método de extensión CopyTo. Busca aquí. –

+0

te refieres a la búsqueda de pila sobre flujo para copiar a método de extensión? – rik

2

Puede utilizar DeleteOnClose parámetro del constructor: FileStream

FileStream fs = new FileStream("<Path Here>", FileMode.Create, 
    FileAccess.ReadWrite, FileShare.None, 1024, FileOptions.DeleteOnClose); 

y el archivo se eliminará cuando se cierre.

2

Creo que significa leer el contenido de ese archivo en la memoria como un todo y luego cerrar la conexión al archivo. Asumiendo que es un archivo que no es demasiado grande sólo podía leerlo en un byte []:

byte[] fileContent = File.ReadAllBytes(fileName); 

Si se trata de un archivo de texto leído en una cadena utilizando

string fileContent = File.ReadAllText(fileName); 

Una vez que hayas hecho esto use un StreamReader para leerlo más tarde como lo haría con un archivo en el disco.

Cuestiones relacionadas