2011-07-27 5 views
50

Estoy desarrollando una aplicación para dispositivos móviles con .NET compact framework 2.0. Estoy tratando de cargar el contenido de un archivo a un objeto de cadena, pero de alguna manera no puedo hacerlo. No existe el método ReadToEnd() en la clase System.IO.StreamReader. ¿Hay otra clase que proporciona esta funcionalidad?Lectura de contenido de archivos a cadena en .NET Compact Framework

+0

Por favor, publique el código que tiene hasta ahora. – NickHeidke

Respuesta

96
StringBuilder sb = new StringBuilder(); 
using (StreamReader sr = new StreamReader("TestFile.txt")) 
{ 
    String line; 
    // Read and display lines from the file until the end of 
    // the file is reached. 
    while ((line = sr.ReadLine()) != null) 
    { 
     sb.AppendLine(line); 
    } 
} 
string allines = sb.ToString(); 
+0

No sé por qué, pero no hay un método ReadAllText en la clase Archivo. Error: 'System.IO.File' no contiene una definición para 'ReadAllText'. ¿Alguna idea de por qué? – lng

+0

¿Estás usando la nueva palabra clave? Crear una instancia de archivo y usar el archivo estático son dos cosas diferentes. – Jethro

+0

Estoy tratando de usar el método estático como lo publicaste. – lng

7

File.ReadAllText(file) ¿Qué estás buscando?

También hay File.ReadAllLines(file) si lo prefiere desglosado en una matriz por línea.

+0

-1: 'ReadAllText' no está implementado en .NET compact framework, que es lo que la pregunta estaba haciendo. – JohnD

+0

De hecho, supongo que estaba equivocado. Sin embargo, estoy un poco confundido porque faltaba 'ReadToEnd' según OP, y sin embargo [existe en .net 2.0 compact] (http://msdn.microsoft.com/en-us/library/System.IO. StreamReader_methods% 28v = vs.80% 29.aspx) –

41
string text = string.Empty; 
using (StreamReader streamReader = new StreamReader(filePath, Encoding.UTF8)) 
{    
    text = streamReader.ReadToEnd(); 
} 

Otra opción:

string[] lines = File.ReadAllLines("file.txt"); 

https://gist.github.com/paulodiogo/9134300

simple!

+1

Un poco más simple sería envolver su línea media en una instrucción using para que no tenga que llamar 'Close()' en su lector. Deje que el marco haga todo eso por usted. – krillgar

+1

@krillgar como este? –

+1

Correcto. El usuario no solo llama al 'Close()', sino que también llama al 'Dispose()', que libera recursos. – krillgar

Cuestiones relacionadas