2010-08-31 16 views

回答

7

您可以使用fopenfseek

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. 

在執行時:

$ php a.php 

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

'FSEEK()'不會改變文件大小。 – jmz 2010-08-31 11:16:50

+1

現在你已經編輯了代碼來執行'fwrite()',它可以工作,但你的原始答案只提到'fseek()'。將來,您應該提供完整的代碼,如編輯後的版本,或者更詳細地解釋。問這個問題的人不知道如何去做,這就是他問的原因。 – jmz 2010-08-31 11:35:56

+0

當我嘗試在win 2003服務器系統上創建一個大於1GB的文件(我擁有所有權利,並且它是NTFS)時,此操作失敗 – Mike 2010-08-31 13:13:13

1

如果該文件的內容是不相關的然後就墊了 - 但不要做確保你不會產生太大的變量來保存內存:

<?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); 

如果文件必須被別的東西讀取 - 那你怎麼做取決於需要讀取它的其他東西。

C.

0

看看我在底部

代碼^^的最大特點是在這裏與0創建一個4GB的文件^^

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; 
} 

測試^^ Max在PHP的32位4 294 967 296:

CreatFileDummy('mydummyfile.iso',4294967296);

你想要寫,讀和科瑞文件虛擬我的代碼在這裏^^:

https://github.com/Darksynx/php

Algorithm to Generate a LARGE Dummy File

相關問題