Mailinglisten-Archive |
Hallo liebe Liste, gibt es eine Möglichkeit, das Ende einer Datei explizit zu setzen? Ich habe in meiner ASCII Tabelle den Hex-Wert 0x034 gefunden, was als 'file separator' bezeichnet wird. Ich habe bereits in de.comp.lang.php.misc mein konkretes Problem geschildert, deswegen werde ich es mal Zitieren (ich hoffe es verärgert keinen): <Zitat Xref= de.comp.lang.php.misc:48130 > [...] >>> (Oder?) Nun zu meiner Frage. Gibt es in PHP eine Möglichkeit, eine >>> Datei an ihrem Ende um x Bits zu kürzen? >>> Oder, wenn ich die Bits am Ende der Datei - oder an beliebeiger >>> Stelle - mit NULL-Bits überschreibe, wird dann der Plattenplatz >>> automatisch freigegeben? >>> [...] >> str_replace( 'Bit' , 'Byte' , $quote ); >> //In oberen Nachricht alle 'Bits' durch 'Bytes' ersetzen :-) [Lösungsvorschlag von Gustav Graf] > > In diesem und für den einfachen Fall (Inhalt wird nach vorne geschoben): > file_put_contents ($filename, substr (file_get_contents ($filename), > $xBytesWeniger)); So einfach ist es nicht :-( . Ich greife gezielt auf bestimmte Positionen in der Datei zu. D.h.: 1.) ich positioniere den Dateizeiger auf das erste Byte des Dateiblocks 2.) ich lese temporär von da an eine bestimmte Menge an Bytes (x) --nennen wir sie einen Datensatz-- in den Arbeitsspeicher ein. ( Im Arbeitsspeicher liegt nun eine Kopie eines Abschnitts - eines Datensatzes - aus der Datei ) 3.) ich verschiebe den Dateizeiger auf die neue Position des Datensatzes 4.) ich schreibe von dort an den Datensatz der Länge x in die Datei 0.) und das mit jedem Datensatz Um das mal 'grafisch' zu verdeutlichen: Annahmen & Erläuterungen: | sei ein die Byteabfolge eines Datensatzes neue Position = alte Pos. - 1 X überflüssiges Byte nach der Transformation Bytes: 1 2 3 4 5 6 7 8 EOF vor Transformation: | | | | | | nach Transform. | | | | | | X Da ich eine Kopie in die Datei geschrieben habe, hat das letzte Byte X den Wert des letzten Bytes des Originals. Ich kann es nun mit einem NULL Byte überschreiben, würde aber gerne das Byte freigeben. D.h., dass es nicht mehr der Datei gehört </zitat> -- MfG Martin Rozmus martinrozmus at freenet.de
php::bar PHP Wiki - Listenarchive