7

PHPで特定のサイズのファイルを作成するにはどうすればよいですか(コンテンツに関係なく)?

1GB を超えるファイルを作成する必要があります。最大約4~10GB

4

4 に答える 4

11

fopenとを利用できます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.

実行時:

$ php a.php

$ wc somefile.txt
  0   1 100 somefile.txt
$ 
于 2010-08-31T11:12:19.737 に答える
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);

ファイルを他のものから読み取れるようにする必要がある場合、その方法は、それを読み取る必要がある他のものによって異なります。

C.

于 2010-08-31T11:17:26.680 に答える
0

一番下の私のコードを見てください

^^ 最高の機能は、ここで 0 を使用して 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;
}

テストしてみてください ^^ Max in Php 32bit 4 294 967 296 :

CreatFileDummy('mydummyfile.iso',4294967296);

Write 、 Read 、および Create File Dummy が必要な場合、私のコードはここにあります ^^ :

https://github.com/Darksynx/php

LARGE ダミー ファイルを生成するアルゴリズム

于 2015-12-29T23:07:47.140 に答える