Dateien verkleinern

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Dateien verkleinern
Hallo!

Ich habe eine theoretische Frage zur Dateiverwaltung eines Betriebssystems:

Es gibt in Betriebssystemen eine Verwaltungsdatenstruktur, die Dateinamen auf eine Folge von Blöcken abbildet. (Wir haben ja 4 Möglichkeiten solcher Verwaltungsdatenstrukturen kennengelernt). Im Skript steht nun, daß man bei blockorientierten Systemen Dateien erweitern kann bzw. die Blöcke verschieben kann.

Mich würde jetzt interessieren, ob man Dateien auch verkleinen kann. Das müsste nach meinem Verständnis funktionieren:
“Die letzten x Blöcke der Datei” aus der jeweiligen Datei-Verwaltungsstruktur löschen und in die Freispeichertabelle stellen.
Das das Thema “Verkleinern von Dateien” im Skript jedoch konsequent nicht erwähnt wird, wollte ich lieber noch mal bei den Informatik-Profis im Forum nachfragen…


Das Thema verkleinern wird aus meiner Sicht selten angesprochen, da es nie ein Problem darstellt, Speicher wieder frei zu geben.

Problematischer ist eben, eine Datei zu erweitern, da wenn man eben sequentiell abspeichert alle Blöcke hintereinander benötigt. Jetzt kann es aber sein, dass hinter meinem letzten Dateiblock nicht genug Blöcke frei sind und ich muss mir eine passende Lücke für die gesamte Datei auf der Festplatte suchen und alles dorthin kopieren. Ist die Verwaltungsstruktur aber blockorientiert, so kann man sich einfach irgend einen freien Block nehmen und diesen als zu meiner Datei gehörig markieren. Erweitern ist also kein Problem.
Erweitern ist eben deshalb ein Problem, da ich nicht immer garantieren kann, dass es ohne großen Aufwand möglich ist.

Noch mal zum Thema verkleinern einer Datei:
Diese Operation stellt einfach kein Problem dar, völlig unabhängig von meiner Verwaltungsstruktur. Sowohl bei sequentieller als auch blockorientierter Vorgehensweise kann ich jederzeit Blöcke von hinten verwerfen und der Freispeicherverwaltung zuführen.



Etwas aus dem Kontext gerissen.

Erweitern kann allgemein ein Problem sein, ist es aber bei blockorientierter Verwaltungsstruktur nicht.

Damit wollte ich nur ausdrücken, warum man sich um das Erweitern Gedanken macht und über das Verkleinern nicht.

Außerdem hast du nicht ganz korrekt zitiert und die Absatzformatierung war auch nicht nur so zum Spaß.


Und du hast deinen Humor heute zu Hause gelassen, oder ? :slight_smile:


schau mal in den manpages nach
int truncate(const char *path, off_t length);

alles nach dem length ten byte geht verloren

unter windows funzt des allerdings nicht, da musste soweit ich weiss ein neues file erstellen wo du die ersten length bytes reinschreibst und des alte löschen

jedenfalls find ich in der msdn nichts der gleichen