Muszę zmienić konkretną linię tekstuplik w asp.net. Czy mogę zmienić / zamienić tekst tylko w określonej linii? Użyłem funkcji zamiany w pliku tekstowym, ale zastępuję tekst w całym pliku. Chcę zastąpić tylko jedną określoną przeze mnie linię.
Czekam na odpowiedź ..
Z góry dziękuję..
Odpowiedzi:
6 dla odpowiedzi № 1Systemy plików zasadniczo nie pozwalają na edycję w pliku inny niż bezpośrednio nadpisuje bajt po bajcie. Gdyby twój plik tekstowy używa tej samej liczby bajtów dla każdej linii, możesz bardzo skutecznie zastąpić linię tekstu - ale jest to stosunkowo rzadki przypadek w tych dniach.
Jest bardziej prawdopodobne, że będziesz potrzebował jednej z tych opcji:
- Załaduj cały plik do pamięci za pomocą
File.ReadAllLines
, zmień odpowiednią linię, a następnie zapisz ją ponownie, używającFile.WriteAllLines
. Jest to nieefektywne pod względem pamięci, ale naprawdę proste do zakodowania. Jeśli twój plik jest mały, jest to dobra opcja. - Otwórz plik wejściowy i nowy plik wyjściowy. Odczytaj wiersz tekstu na raz z wejścia i albo kopiuj go na wyjście, albo pisz w innym wierszu. Następnie zamknij oba pliki, usuń plik wejściowy i zmień nazwę pliku wyjściowego. Wymaga to tylko jednego wiersza tekstu w pamięci na raz, ale jest znacznie bardziej skrzypiący.
Druga opcja ma inną zaletę - możesz tasować pliki wokół (używając wielu kroków zmiany nazwy), aby na Bez sensu czy kiedykolwiek masz możliwość utraty pliku wejściowego, chyba że plik wyjściowy jest znany jako kompletny i we właściwym miejscu. To jeszcze bardziej skomplikowane.