2011-02-09 30 views

Respuesta

39

He aquí una forma de única vaciado si ya existe y que no tiene el problema de usar file_exists, como el archivo puede dejar de existe entre la llamada file_exists y la llamada fopen.

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

Parece un enfoque bastante robusto :) – riha

+0

¿Por qué el voto a favor? – Artefacto

+0

@Col. ¿Qué hay de eso? Es necesario hacer un aviso previo gratis. – Artefacto

1

Primero elimínelo usando unlink() y luego simplemente cree un nuevo archivo vacío con el mismo nombre.

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

O en una sola línea y sin almacenar el identificador de archivo (temporal):

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

Como otros han dicho, esto crea el archivo en caso de que no existe.

+8

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

12

Escribir una cadena vacía como el contenido de filename.txt:

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

Como se indica en php docs, esto es lo mismo que fopen, fwrite y fclose. Como no se requiere fwrite, esto podría ser un poco más lento que solo fopen/fclose. – riha

+0

Es bueno saber, he votado su respuesta –

2

Sólo abrirlo para escribir:

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

Para 'ftruncate()' tienes que 'fopen()' primero. Si 'fopen()' para escribir, el archivo ya está truncado a cero bytes. –

+0

@Ferdinand depende de cómo lo abra. – Artefacto

+0

@Artefacto en general - sí. en este caso particular, ya está truncado. Tu comentario no tiene sentido y solo fastidia molesto. –

-1

puede utilizar el siguiente código

`

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

` Simplemente anulará el contenido de su archivo en blanco

Cuestiones relacionadas