Edycja linii w pliku tekstowym

Edycja linii w pliku tekstowym
AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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)?

SI
  • Rejestracja: dni
  • Ostatnio: dni
2

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

AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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.

RE
  • Rejestracja: dni
  • Ostatnio: dni
1

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

AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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?

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
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.

AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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?

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
adaxo napisał(a):

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

Zależy jakie dane.

adf88
  • Rejestracja: dni
  • Ostatnio: dni
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ć.

AD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 13
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?

adf88
  • Rejestracja: dni
  • Ostatnio: dni
0

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

  • Rejestracja: dni
  • Ostatnio: dni
0

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

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0
LOLXML napisał(a):

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

Taki, że XML nie jest ładny.

  • Rejestracja: dni
  • Ostatnio: dni
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.

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.