2013-05-27 2 views
1

하나의 텍스트 파일을 반으로 나누고 하나의 파일에 절반을 넣고 나머지 절반은 다음 파일에 넣기를 원합니다. 어떻게 이것을 달성 할 수 있을까요?PHP를 사용하여 텍스트 파일을 절반으로 분할 하시겠습니까?

예는 다음과 같습니다? split.php N = 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()를 사용하십시오. 그런 다음 $ 변수를 반으로 나누고 putfilecontents를 두 번 사용하여 디스크에 기록하십시오. – 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

관련 문제