2010-08-31 7 views

risposta

7

Si può fare uso di fopen e fseek

define('SIZE',100); // size of the file to be created. 
$fp = fopen('somefile.txt', 'w'); // open in write mode. 
fseek($fp, SIZE-1,SEEK_CUR); // seek to SIZE-1 
fwrite($fp,'a'); // write a dummy char at SIZE position 
fclose($fp); // close the file. 

In fase di esecuzione:

$ php a.php 

$ wc somefile.txt 
    0 1 100 somefile.txt 
$ 
+0

'fseek()' non altera le dimensioni del file. – jmz

+1

Ora che hai modificato il codice per fare un 'fwrite()', funziona, ma la tua risposta originale menzionava solo 'fseek()'. In futuro, dovresti fornire il codice completo, come la versione modificata, o spiegarlo in maggior dettaglio. La persona che fa la domanda non sa come farlo, è per questo che sta chiedendo. – jmz

+0

questo fallisce quando provo a creare un file più grande di 1 GB su un sistema server win 2003 (ho tutti i diritti, ed è NTFS) – Mike

1

Se il contenuto del file è irrilevante poi basta pad - ma facciamo sicuro di non generare una variabile troppo grande da tenere in memoria:

<?php 
$fh = fopen("somefile", 'w'); 
$size = 1024 * 1024 * 10; // 10mb 
$chunk = 1024; 
while ($size > 0) { 
    fputs($fh, str_pad('', min($chunk,$size))); 
    $size -= $chunk; 
} 
fclose($fh); 

Se il file deve essere leggibile da qualcos'altro - allora come lo fai dipende dall'altra cosa che ha bisogno di leggerlo.

C.

0

Guardate il mio codice in basso

^^ La caratteristica migliore è qui con degli 0 per creare un file da 4 GB ^^

FUNCTION CreatFileDummy($file_name,$size) { 
// 32bits 4 294 967 296 bytes MAX Size 
    $f = fopen($file_name, 'wb'); 
    if($size >= 1000000000) { 
     $z = ($size/1000000000);  
     if (is_float($z)) { 
      $z = round($z,0); 
      fseek($f, ($size - ($z * 1000000000) -1), SEEK_END); 
      fwrite($f, "\0"); 
     }  
     while(--$z > -1) { 
      fseek($f, 999999999, SEEK_END); 
      fwrite($f, "\0"); 
     } 
    } 
    else { 
     fseek($f, $size - 1, SEEK_END); 
     fwrite($f, "\0"); 
    } 
    fclose($f); 

Return true; 
} 

prova si ^^ Max in Php 32bit 4 294 967 296:

CreatFileDummy ('mydummyfile.iso', 4294967296);

Si desidera scrivere, leggere e Creat file fittizio il mio codice è qui ^^:

https://github.com/Darksynx/php

Algorithm to Generate a LARGE Dummy File