Exemple:
variable = new StreamReader( file ).ReadToEnd();
Est-ce acceptable?
Non, cela ne fermera pas le StreamReader. Vous devez le fermer. L'utilisation fait cela pour vous (et le supprime pour qu'il soit GC plus tôt):
using (StreamReader r = new StreamReader("file.txt"))
{
allFileText = r.ReadToEnd();
}
Ou bien, dans .Net 2, vous pouvez utiliser le nouveau fichier. membres statiques, vous n'avez rien à fermer:
variable = File.ReadAllText("file.txt");
Vous devez toujours disposer de vos ressources.
// the using statement automatically disposes the streamreader because
// it implements the IDisposable interface
using( var reader = new StreamReader(file) )
{
variable = reader.ReadToEnd();
}
Ou du moins l'appeler manuellement:
reader = new StreamReader(file);
variable = reader.ReadToEnd();
reader.Close();
Vous devez supprimer les objets qui implémentent IDisposable
. Utilisez une instruction using
pour vous assurer qu'elle est supprimée sans appeler explicitement la méthode Dispose.
using (var reader = new StreamReader(file))
{
variable = reader.ReadToEnd();
}
Alternativement, utilisez File.ReadAllText(String)
variable = File.ReadAllText(file);
Oui, chaque fois que vous créez un objet jetable, vous devez en disposer de préférence avec une instruction using
using (var reader = new StreamReader(file)) {
variable = reader.ReadToEnd(file);
}
Dans ce cas, vous pouvez simplement utiliser le File.ReadAllText
méthode pour simplifier l'expression
variable = File.ReadAllText(file);
Il est recommandé de fermer StreamReader
. Utilisez le modèle suivant:
string contents;
using (StreamReader sr = new StreamReader(file))
{
contents = sr.ReadToEnd();
}
Il vaut mieux utiliser le mot-clé sing; vous n'avez alors pas besoin de fermer explicitement quoi que ce soit.