ftruncate în PHP

Taie un fișier deschis la o anumită lungime (de exemplu 0, ca să îl golești).

Sintaxă
ftruncate($stream, int $size): bool

Ce face ftruncate

ftruncate schimbă lungimea fișierului: dacă noua lungime este mai mică, restul se pierde, iar dacă este mai mare, fișierul se completează cu octeți nuli. Fișierul trebuie deschis pentru scriere.

Cursorul nu se mută. După golire cu ftruncate($f, 0), apelează rewind($f) înainte să scrii din nou.

Parametri

Parametru Descriere
$stream Resursa returnată de fopen, deschisă pentru scriere.
$size Noua lungime, în octeți.

Ce returnează

true la succes, false la eroare.

Exemple

Exemplul 1: Golire și rescriere

<?php
file_put_contents("stare.txt", "în lucru, 45% gata");

$f = fopen("stare.txt", "r+");
ftruncate($f, 0);
rewind($f);
fwrite($f, "terminat");
fclose($f);

echo file_get_contents("stare.txt");

Rezultat

terminat

Greșeli frecvente

  • Golești fișierul cu ftruncate și scrii fără rewind. Textul nou ajunge la vechea poziție, iar înainte de el apar octeți nuli.

Comenzi înrudite

  • rewind: Mută cursorul unui fișier deschis înapoi la început.
  • fopen / fclose: Deschide un fișier pentru citire sau scriere și returnează o resursă; fclose îl închide.
  • flock: Blochează un fișier ca două scripturi să nu îl modifice în același timp.