variable = new StreamReader(file).ReadToEnd();
Czy to jest dopuszczalne?
variable = new StreamReader(file).ReadToEnd();
Czy to jest dopuszczalne?
Nie, to nie zamknie StreamReadera. Musisz to zamknąć. Korzystanie robi to za Ciebie (i zbywa go więc to GC'd wcześniej):
using (StreamReader r = new StreamReader("file.txt"))
{
allFileText = r.ReadToEnd();
}
Lub alternatywnie w .NET 2 można korzystać z nowego pliku. statyczne elementy, wtedy nie musisz niczego zamykać:
variable = File.ReadAllText("file.txt");
Zawsze należy pozbyć się swoich zasobów.
// the using statement automatically disposes the streamreader because
// it implements the IDisposable interface
using(var reader = new StreamReader(file))
{
variable = reader.ReadToEnd();
}
Albo przynajmniej nazywając ją ręcznie:
reader = new StreamReader(file);
variable = reader.ReadToEnd();
reader.Close();
Dla kogoś, kto nie wie, że instrukcja użycia automatycznie zaopiekuje się tym dla ciebie, byłoby to mylące. Brak głosowania w dół, ale nie ma głosu up albo dlatego, że nie jest to po prostu sformułowane dla początkujących, aby zrozumieć. – David
Dodano komentarz, aby być pomocne – Dismissile
Fajne ziarna. +1. – David
trzeba utylizować obiektów, które implementują IDisposable
. Użyj instrukcji using
, aby się upewnić, że zostanie ona usunięta bez jawnego wywoływania metody Dispose.
using (var reader = new StreamReader(file))
{
variable = reader.ReadToEnd();
}
Alternatywnie, użyj File.ReadAllText(String)
variable = File.ReadAllText(file);
+1 ale powiedziałbym "nie musisz tego wyraźnie zamykać, jeśli użyjesz instrukcji" using ", aby upewnić się, że zostanie ona usunięta. +1, ponieważ jest to wyraźniej sformułowane niż odpowiedź Dismissile'a. Jego odpowiedź nie wyjaśnia, że instrukcja użycia będzie dysponować zasobami dla ciebie, a ktoś, kto nie wiedział, że pozostanie, drapie się po głowie – David
To jest dobre praktyki, aby zamknąć StreamReader
. Użyj następującego szablonu:
string contents;
using (StreamReader sr = new StreamReader(file))
{
contents = sr.ReadToEnd();
}
Lepiej pomocą użyciu słowa kluczowego; wtedy nie musisz niczego jawnie zamykać.
Tak, podczas tworzenia jednorazowy obiekt należy wyrzucać go najlepiej z wykorzystaniem rachunku
using (var reader = new StreamReader(file)) {
variable = reader.ReadToEnd(file);
}
W tym przypadku jednak można po prostu użyć metody File.ReadAllText
Aby uprościć wyraz
variable = File.ReadAllText(file);
To było pomocne, chociaż badbod99 dostarczył kilka dodatkowych informacji.Myślę, że te szczegóły są poprawne, ponieważ jestem "m" tylko dostaję się do kodu poza javascript. –
'ReadAllText' został dodany w .Net 2.0 (http://msdn.microsoft.com/en-us/library/system.io.file.readalltext(v=VS.80).aspx) – JaredPar
Dzięki Jared (edytowana odpowiedź). TBH niedawno się z tym spotkałem. Kiedy już znasz jeden ze sposobów, masz tendencję do trzymania się tego, co działa. – badbod99