Edycja linii w pliku tekstowym

0

Mam w pliku tekstowym zapisane elementy rozdzielone znakiem "-", oczywiście jedna grupa elementów = jedna linia. Jak najwygodniej i najprościej edytować ten plik tekstowy (wyszukanie linii i zamiana jej, ewentualnie skasowanie tej linii i dodanie nowej, zmienionej na końcu)?

2

Linie wczytujesz metodą File.ReadAllLines(), a do rozdzielenia elementów w pojedynczej linii użyj string.Split("-")

0

Dzięki za odpowiedź, wiem jak wczytać dane i jak z nich korzystać. Natomiast moje pytanie dotyczyło jak wprowadzać zmiany bezpośrednio w plikach tekstowych.

1

Właśnie tak. Wczytaj, zmień, zapisz.

0
Rev napisał(a):

Właśnie tak. Wczytaj, zmień, zapisz.

Załóżmy, że mam 1000 linii, chce zmienić jedną z nich. Więc muszę wczytać 1000 linii do pamięci, zmienić jedna i ponownie wszystko zapisać w pliku? Nie ma możliwości zmiany bez wczytywania całego pliku?

1

Nie ma możliwości zmiany bez wczytywania całego pliku?

W przypadku pliku tekstowego nie bardzo, bo wydłużenie jednej linii o chociaż jeden znak powoduje, że cała dalsza zawartość pliku o ten jeden bajt się przesuwa.

To nie jest jakieś „techniczne ograniczenie” że nie da się zmienić fragmentu pliku (bo się da), tylko w twoim przypadku (czyli pliku tekstowego) nie ma po prostu innej możliwości niż przepisać cały plik.

0
Azarien napisał(a):

Nie ma możliwości zmiany bez wczytywania całego pliku?

W przypadku pliku tekstowego nie bardzo, bo wydłużenie jednej linii o chociaż jeden znak powoduje, że cała dalsza zawartość pliku o ten jeden bajt się przesuwa.

To nie jest jakieś „techniczne ograniczenie” że nie da się zmienić fragmentu pliku (bo się da), tylko w twoim przypadku (czyli pliku tekstowego) nie ma po prostu innej możliwości niż przepisać cały plik.

Dzięki za odpowiedź.

Tak już troszeczkę poza tematem, nie licząc baz danych, w jakich plikach najlepiej trzymać dane?

0
adaxo napisał(a):

Tak już troszeczkę poza tematem, nie licząc baz danych, w jakich plikach najlepiej trzymać dane?

Zależy jakie dane.

0
Azarien napisał(a):

To nie jest jakieś „techniczne ograniczenie” że nie da się zmienić fragmentu pliku (bo się da), tylko w twoim przypadku (czyli pliku tekstowego) nie ma po prostu innej możliwości niż przepisać cały plik.
Tak na dobrą sprawę wystarczy przepisać wszystko za edycją, to co przed może zostać. Z tym, że w przypadku ok. 1000 linii nie ma co się babrać.

0
somekind napisał(a):
adaxo napisał(a):

Tak już troszeczkę poza tematem, nie licząc baz danych, w jakich plikach najlepiej trzymać dane?

Zależy jakie dane.

Tekst + liczby. :) Jedna linia to zazwyczaj 100-200 znaków wraz ze spacjami.

adf88 napisał(a):
Azarien napisał(a):

To nie jest jakieś „techniczne ograniczenie” że nie da się zmienić fragmentu pliku (bo się da), tylko w twoim przypadku (czyli pliku tekstowego) nie ma po prostu innej możliwości niż przepisać cały plik.
Tak na dobrą sprawę wystarczy przepisać wszystko za edycją, to co przed może zostać. Z tym, że w przypadku ok. 1000 linii nie ma co się babrać.

W takim razie jaką funkcję polecasz, by modyfikować plik od konkretnej linii?

0

FileStream / StreamReader / StreamWriter. Szczerze odradzam, zły pomysł przy 1k linii.

0

A co za problem utworzyć i trzymać to w ładnym pliku XML?

0
LOLXML napisał(a):

A co za problem utworzyć i trzymać to w ładnym pliku XML?

Taki, że XML nie jest ładny.

0

Jak ktoś nie wie do czego służy i jak go obsłużyć to może i ładny nie jest.
Bazodanowcy są jednak odmiennego zdania.

0
LOLXML napisał(a):

Jak ktoś nie wie do czego służy i jak go obsłużyć to może i ładny nie jest.
Bazodanowcy są jednak odmiennego zdania.

Autor pyta o przetworzenie istniejącego pliku tekstowego, więc po co wyskakujesz z jakimś XML i bazodanowcami?

Jeśli zaś stosujesz XML do przechowywania każdych danych, to faktycznie nie wiesz do czego on służy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1