2011-02-09 10 views

risposta

39

Ecco un modo solo lo svuotamento se esiste già e che non hanno il problema di usare file_exists, come il file può cessare di esiste tra la chiamata file_exists e la chiamata fopen.

$f = @fopen("filename.txt", "r+"); 
if ($f !== false) { 
    ftruncate($f, 0); 
    fclose($f); 
} 
+0

Sembra un approccio abbastanza robusto :) – riha

+0

Perché il downvote? – Artefacto

+0

@Col. Che ne pensi? È necessario rendere la notifica Fopen gratuita. – Artefacto

1

Prima eliminarlo utilizzando unlink() e quindi creare semplicemente un nuovo file vuoto con lo stesso nome.

13
$fh = fopen('filename.txt','w'); // Open and truncate the file 
fclose($fh); 

O in una linea e senza memorizzare l'handle di file (temporaneo):

fclose(fopen('filename.txt','w')); 

Come altri hanno detto, questo crea il file nel caso in cui non esiste.

+8

fclose (fopen ('filename.txt', 'w')); – ekerner

12

Scrivi una stringa vuota come il contenuto di filename.txt:

file_put_contents('filename.txt', ''); 
+0

Come indicato su php doc, questo è lo stesso di fopen, fwrite e fclose. Poiché fwrite non è richiesto, potrebbe essere un po 'più lento di fopen/fclose. – riha

+0

Buono a sapersi, ho upvoted la tua risposta –

2

Basta aprirlo per la scrittura:

if (file_exists($path)) {  // Make sure we don't create the file 
    $fp = fopen($path, 'w'); // Sets the file size to zero bytes 
    fclose($fp); 
} 
0

Con ftruncate(): http://php.net/ftruncate

+0

Per 'ftruncate()' devi prima 'fopen()'. Se si 'fopen()' per scrivere, il file è già troncato a zero byte. –

+0

@Ferdinand dipende da come lo si apre. – Artefacto

+0

@Artefacto in generale - sì. in questo caso particolare - è già troncato. Il tuo commento non ha senso e solo fastidioso pignolo. –

-1

è possibile utilizzare il seguente codice

`

$myFile = "testFile.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
$stringData = ""; 
fwrite($fh, $stringData); 
fclose($fh); 

` Sostituisce semplicemente il contenuto del file in bianco