variable = new StreamReader(file).ReadToEnd();
¿Es esto aceptable?
variable = new StreamReader(file).ReadToEnd();
¿Es esto aceptable?
No, esto no cerrará el StreamReader. Tienes que cerrarlo. Usando lo hace por usted (y la dispone por lo que se GC'd antes):
using (StreamReader r = new StreamReader("file.txt"))
{
allFileText = r.ReadToEnd();
}
o alternativamente en .Net 2 se puede utilizar el nuevo archivo. miembros estáticos, entonces no es necesario que cierre nada:
variable = File.ReadAllText("file.txt");
Siempre debe disponer de sus recursos.
// the using statement automatically disposes the streamreader because
// it implements the IDisposable interface
using(var reader = new StreamReader(file))
{
variable = reader.ReadToEnd();
}
O por lo menos llamar manualmente:
reader = new StreamReader(file);
variable = reader.ReadToEnd();
reader.Close();
Para alguien que no sabe que la instrucción de uso se ocupa automáticamente de esto, sería confuso. No hay voto a la baja, pero tampoco voto positivo, porque esto simplemente no está redactado para que un principiante lo entienda. – David
Agregado un comentario que ser útil – Dismissile
frijoles fríos. +1. – David
Usted necesita deshacerse de objetos que implementan IDisposable
. Use una declaración using
para asegurarse de que se elimine sin llamar explícitamente al método Dispose.
using (var reader = new StreamReader(file))
{
variable = reader.ReadToEnd();
}
Como alternativa, utilice File.ReadAllText(String)
variable = File.ReadAllText(file);
+1 pero le diría "no es necesario que lo cierres explícitamente si usas una declaración de" uso "para asegurarte de que se elimine. +1 porque está redactado con más claridad que la respuesta de Dismissile. Su respuesta no hace nada para explicar que la declaración de uso dispondrá de los recursos para usted, y alguien que no lo sabía se quedaría rascándose la cabeza. – David
Es una buena práctica para cerrar StreamReader
. Utilice la siguiente plantilla:
string contents;
using (StreamReader sr = new StreamReader(file))
{
contents = sr.ReadToEnd();
}
Es mejor utilizar la palabra clave usando; entonces no es necesario cerrar explícitamente nada.
Sí, siempre que se crea un objeto desechable debe disponer de él de preferencia con una instrucción using
using (var reader = new StreamReader(file)) {
variable = reader.ReadToEnd(file);
}
En este caso, sin embargo, puedes usar el método File.ReadAllText
para simplificar la expresión
variable = File.ReadAllText(file);
Esto fue útil aunque badbod99 suministró algunos detalles más. Estoy asumiendo que esos detalles son correctos ya que estoy solo ingresando al código fuera de javascript. –
'ReadAllText' se agregó en .Net 2.0 (http://msdn.microsoft.com/en-us/library/system.io.file.readalltext(v=VS.80).aspx) – JaredPar
Gracias Jared (respuesta editada) TBH solo lo encontré recientemente. Una vez que conoces una forma en general, tienden a seguir con lo que funciona. – badbod99