2012-02-29 33 views
5

Estoy tratando de leer en un archivo de texto de 150 MB en un cuadro de texto enriquecido.C# - Leer en un archivo de texto grande (150 MB) en un cuadro de texto enriquecido

Actualmente, estoy usando un StreamReader para recorrer cada línea en el archivo, agregando cada línea a una instancia de StringBuilder.

Esto funciona para archivos más pequeños, pero obtengo una excepción System.OutOfMemory cuando intento leer archivos de gran tamaño.

No veo ningún problema con la lectura de un archivo de 150 mb: hay mucha memoria física y eso está dentro del espacio de direcciones de la aplicación Windows de 32 bits.

Si alguien aquí tiene alguna idea de cómo hacer esto, sería muy apreciado.

Adjuntaré mi código al final.

Gracias.

StringBuilder sb = new StringBuilder(); 
using (StreamReader sr = new StreamReader(fileLocation)) 
{ 
    string line; 
    while ((line = sr.ReadLine()) != null) 
    { 
     sb.AppendLine(line); 
    } 
    } 

return sb; 
+0

+1, buena pregunta. –

+1

¿Podría publicar un seguimiento de pila? Entonces, podemos ver exactamente dónde ocurre la excepción. Además, esto podría estar relacionado: http://stackoverflow.com/questions/363680/stringbuilder-for-string-concatenation-throws-outofmemoryexception (con respecto a los constructores de cadenas) – Christoffer

+1

Aclare, este código (la parte de lectura) arroja la excepción ¿O eso sucede cuando cargas el RTB? –

Respuesta

5

Uso RichTextBox.LoadFile

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.loadfile.aspx

No estoy seguro de por qué usted quiere cargar todo el texto a un StringBuilder. Alternativamente, podría pasar un FileStream a LoadFile que representaría el archivo grande para usted.

+1

Me temo que esto también da como resultado una excepción System.OutOfMemoryException. ¿Algunas ideas? –

+0

+1, buena respuesta. No lo sé hasta ahora. –

0

Creo que se debe manejar de alguna manera el archivo de entrada - vamos a decir que se dividió en varias menos archivos y navegar entre las partes mediante programación o así ..

archivo de 150MB suena como algo anormal. Tal vez deberías mirar el tipo de flujo de procesamiento de datos en lugar de presentar uno.

Cuestiones relacionadas