Chcę dołączyć wiersze do mojego pliku. Używam StreamWriter:
StreamWriter file2 = new StreamWriter(@"c:\file.txt");
file2.WriteLine(someString);
file2.Close();
Wynik mojego pliku powinien znajdować się kilka ciągów pod sobą, ale mam tylko jeden wiersz, który jest nadpisywany za każdym razem, gdy uruchamiam ten kod.
Czy istnieje sposób, aby StreamWriter dołączyć do istniejącego pliku?
c#
streamwriter
Punkt orientacyjny
źródło
źródło
StreamWriter
.using
Blok jest lepiej składnię tego.using (var stream = new StreamWriter(..)) { stream.WriteLine(..); }
Odpowiedzi:
Użyj tego zamiast tego:
Przy tym przeciążeniu konstruktora StreamWriter możesz wybrać, czy dołączysz plik, czy go zastąpisz.
C # 4 i nowsze oferują następującą składnię, która dla niektórych jest bardziej czytelna:
źródło
źródło
Zakładam, że wykonujesz cały powyższy kod za każdym razem, gdy zapisujesz coś do pliku. Za każdym razem, gdy strumień pliku jest otwierany, jego wskaźnik wyszukiwania jest umieszczany na początku, więc wszystkie zapisy kończą się nadpisywaniem tego, co było wcześniej.
Możesz rozwiązać problem na dwa sposoby: albo za pomocą wygodnego
lub samodzielnie zmieniając położenie wskaźnika strumienia:
źródło
Spróbuj tego:
źródło
Zastąp to:
z tym:
true
wskazuje, że dołącza tekst.źródło
Użyj tego
StreamWriter
konstruktora z drugim parametrem -true
.źródło
Inną opcją jest użycie System.IO.File.AppendText
Jest to równoważne z przeciążeniami StreamWriter podanymi przez innych.
Również File.AppendAllText może dać nieco łatwiejszy interfejs bez martwienia się o otwieranie i zamykanie strumienia. Chociaż może wtedy będziesz musiał martwić się wprowadzaniem własnych podziałów linii. :)
źródło
Właściwie tylko odpowiedź Jona (wrzesień 5 '11 o 9:37) z BaseStream.Seek zadziałała w moim przypadku. Dzięki Jon! Musiałem dołączyć wiersze do zarchiwizowanego pliku txt.
źródło
Jeszcze prostszym sposobem jest
File.AppendText
dodanie tekstu zakodowanego w UTF-8 do istniejącego pliku lub do nowego pliku, jeśli określony plik nie istnieje i zwracaSystem.IO.StreamWriter
źródło
Zastąp tę linię:
z tym kodem:
a następnie zapisz swoją linię do pliku tekstowego w ten sposób:
źródło