php將大檔案平均拆分成小檔案

2021-09-25 22:56:31 字數 1485 閱讀 9473

最近獲得了乙個40多萬行資料的檔案,需要把這個大檔案分成小檔案,在做完這件事之後,寫個文件記錄一下。

相關主要函式 輸出

0

272731 321343 269707200

30

這些函式提供的功能,可以給拆分檔案提供乙個思路:將指標不斷地移動相同的位數,每移動一次指標得到乙個等長字串,將等長字串寫入新的檔案中。

準備乙個大檔案data.txt,或者建立乙個。

<?php 

//建立乙個40萬行的檔案

$file = fopen('source/data.txt','w+');

for($i = 0; $i<=400000 ;$i++)

不用指標的情況下將檔案拆分

<?php 

$file = fopen('source/data.txt','r+') or die('fail');

$filenum = 100; //拆分成新檔案的數量

$filelen = ceil(filesize('source/data.txt')/$filenum); //每個新檔案的長度

for ($i = 0; $i< $filenum ; $i++)

fclose($file);

這樣確實能平均拆分大檔案。但是會出現乙個問題,會在行內拆分檔案。如下圖,第乙個檔案分到了某一行的一部分,第二個檔案分到該行的另一部分。對於處理檔案來說,我們希望每個檔案的每行都是完整的。

應用指標設定優化

<?php 

$file = fopen('source/data.txt','r+') or die('fail');

$filenum = 100; //拆分成新檔案的數量

$filelen = ceil(filesize('source/data.txt')/$filenum); //每個新檔案的長度

rewind($file); //指標設定到檔案開頭0的位置

$lastlen = 0;

for ($i = 0; $i< $filenum ; $i++)

fclose($file);

完成!

大檔案拆分為小檔案進行上傳 java

原因 檔案大於3m直接上傳伺服器,檔案太大伺服器直接直接接收不了,所以進行檔案拆分 拆分重點 讀和寫用到的函式 讀用fileinputstream,寫用fileoutputstream 輸入 大檔案路徑 file taskfile new file taskfilepath inputstream ...

大檔案拆分

fp e logtest u ex160314.log 原檔名稱 fname e logtest u ex160314 新檔名稱 fsize 1024 1024 1mb,定義每個新檔案的大小 num 1 新檔名後 1 sum 0 每個新檔案的當前大小 with open fp,rb as fo fo...

將大檔案拆分並重新合併

實現思路 將大檔案拆分 因為拆分的可以是任何檔案,所有這裡使用位元組流進行拆分 可以利用緩衝區來對檔案進行拆分,如每次讀取400mb的類容將其寫成乙個新的檔案 拆分的檔案需要順序標明,以便正確順序還原 首先定義方法,我這裡給兩個引數,分別是目標檔案的路徑與拆分後寫入的路徑。將大檔案拆分成最大400m...