Usuwanie znaków z plików.

0

Czy da się bezpośrednio usuwać znaki z plików? Wiem jak to robić poprzez wczytanie zawartości pliku do tablicy oraz poprzez zapis odpowiednich fragmentów ponownie czy poprzez przekopiowanie odpowiedniej części pliku do drugiego pliku, ale czy na pewno nie da się tego zrobić szybciej poprzez to bezpośrednie usuwanie określonych znaków?

1

Co to znaczy bezpośrednie usuwanie określonych znaków?
'Pod spodem' przecież tak czy siak plik musi być zapisany od początku do końca, bo tak działają wszystkie (większość?) systemów plików.

0

@Patryk27 Mówiąc "bezpośrednie usuwanie określonych znaków", to właśnie mi chodziło o to czy da się zapisać fragment pliku bez zapisu całego od początku do końca.

0

Dyski wymagają zapisywania po całych blokach, i dlatego też jak zrobisz prawie pusty plik, to on tyle waży.

i też jak to jest zapisane szeregowo, to jak przestawisz fizyczny szereg?
Chyba, że zastosujesz jakiś bit neutralny, który nie byłby potem przekazywany dalej do aplikacji, ale nie ma takiego.

Możliwe, że dałoby się tak zrobić, ale to pewnie wymagałoby pewnych korekt w sterowniku, albo nawet samym urządzeniu dysku.
I działało by tylko do zmiany, anie nie do doklejenia dodatkowych bajtów w danych miejscach.

0
amb00 napisał(a):

Czy da się bezpośrednio usuwać znaki z plików? Wiem jak to robić poprzez wczytanie zawartości pliku do tablicy oraz poprzez zapis odpowiednich fragmentów ponownie czy poprzez przekopiowanie odpowiedniej części pliku do drugiego pliku, ale czy na pewno nie da się tego zrobić szybciej poprzez to bezpośrednie usuwanie określonych znaków?

Fizycznie nie da rady.

No, a logicznie to sobie możesz, co chcesz... np. ustalasz sobie znak 'nic' (np. o kodzie =0, albo 255 w trybie 1bajtowym),
i nie jest to jak spacja, bo ta też znaczy... więc potem czytając taki plik pomijasz te zera kompletnie.

Np. mając plik:
Abrakadabra'nic'\n\r

czytasz to jako Abrakadabra\n\r
czyli olewasz ten znak 'nic' kompletnie... no ale on i tak zajmuje miejsce na dysku.

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