php创建给定大小的文件

时间:2010-08-31 11:09:05

标签: php createfile

如何在PHP中创建具有给定大小(无论内容)的文件?

我必须创建一个大于1GB的文件。最大4-10GB

4 个答案:

答案 0 :(得分:10)

您可以使用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
$ 

答案 1 :(得分:3)

如果文件的内容不相关,那么只需填充它 - 但请确保您不会生成太大而无法保存在内存中的变量:

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

如果文件必须是其他东西可读 - 那么你如何做它取决于需要阅读的其他东西。

下进行。

答案 2 :(得分:0)

在底部查看我的代码

^^最好的功能是0s来创建一个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 in Php 32bit 4 294 967 296:

CreatFileDummy( 'mydummyfile.iso',4294967296);

你想写,读和创建文件虚拟我的代码在这里^^:

https://github.com/Darksynx/php

Algorithm to Generate a LARGE Dummy File

答案 3 :(得分:0)

晚了,但确实比其他答案容易。

$size = 100;
$fp = fopen('foo.dat',"w+");
fwrite($fp,str_repeat(' ',$size),$size);

w +将创建文件或将其覆盖(如果已经存在)。

对于一个很大的文件,我通常会作弊:

`truncate -s 10g foo.dat`;