如何在 PHP 中创建具有给定大小的文件(无论内容如何)?
我必须创建一个大于 1GB 的文件。最大 4-10GB
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
$
如果文件的内容无关紧要,则只需填充它 - 但请确保您不会生成太大而无法保存在内存中的变量:
<?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。
晚了,但它确实比其他答案更容易。
$size = 100;
$fp = fopen('foo.dat',"w+");
fwrite($fp,str_repeat(' ',$size),$size);
w+ 将创建文件或覆盖它(如果它已经存在)。
对于一个非常大的文件,我通常会作弊:
`truncate -s 10g foo.dat`;
在底部查看我的代码
^^这里最好的功能是用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;
}
测试它 ^^ 最大 PHP 32 位 4 294 967 296 :
CreatFileDummy('mydummyfile.iso',4294967296);
你想要 Write , Read 和 Create File Dummy 我的代码在这里 ^^ :