2013-05-27 3 views
1

Я хочу взять один текстовый файл, разбить его пополам и поместить половину в один файл, а затем оставшуюся половину в следующем. Как это сделать?Разбиение текстового файла наполовину с помощью PHP?

примером может быть: split.php п = file.txt

$file = $_GET['n']; 

$i = 1; 
$fp = fopen("./server/php/files/".$file,'a+'); 
$fs = filesize("./server/php/files/".$file); 
$lengthhalf = $fs/2; 
while(! feof($fp)) { 
    $contents = fread($fp,$lengthhalf); 
    file_put_contents('./server/php/files/[2]'.$file,$contents); 
    $i++; 
} 
+5

по линии или байтами – Orangepill

+0

я мог бы использовать либо, мне просто нужно разделить пополам. – Arbitrary

+0

Если файл довольно мал, просто используйте $ file = filegetcontents(). Затем просто разделите половину переменной $ и дважды используйте файл putfile, чтобы записать их на диск. – viljun

ответ

5

Это делает работу, не читая весь файл (или половина его) сразу в памяти:

function split_in_halves($file, $half1, $half2) { 
    $size = filesize($file); 
    $fd = fopen($file, 'rb'); 

    stream_copy_to_stream($fd, fopen($half1, 'wb'), $size/2); 
    stream_copy_to_stream($fd, fopen($half2, 'wb')); 
} 
split_in_halves('foo', '[1]foo', '[2]foo'); 
+0

+1 для расщепления без загрузки переменной :) –

+0

Работает отлично, только то, что я хотел, большое вам спасибо. – Arbitrary

Смежные вопросы