Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Как разбить файл?

☘️ Green ☘️ Гуру (2755), закрыт 4 года назад
Если есть файл в 1гб или больше, я хочу разделить его на несколько частей, при этом чтобы размер каждого файла не превышал 200мб, как это реализовать?
Не додумаюсь как правильно разбить файл, если я не знаю его размера.
Только на PHP.
Лучший ответ
Уважаемый Товарищ Гуру (4798) 4 года назад
$fp = fopen('file','r');
$num = 1;
while($s = fread($fp,200000000))
{
file_put_contents('file'+$num,$s);
$num++;
}
fclose($fp);

Это простейший код, жрущий много памяти (поскольку вычитывает в ОЗУ весь кусок в 200МБ). Можно оптимизировать, читая более мелкими кусочками. Кури маны по файловым операциям в пхп.

Алсо, можно юзать никсовую команду split через системный вызов. Так будет оптимальнее всего.
https://andreyex.ru/linux/komandy-linux-i-komandy-shell/9-poleznyh-primerov-komandy-split-v-linux
☘️ Green ☘️Гуру (2755) 4 года назад
Цель была разделить файл, размер которого не известен заранее, по вашему примеру это можно было сделать получше как:
<?php
$f_input = fopen("file.txt", "r");
$part_size = filesize("file.txt") / 2;
$part1 = fread($f_input, $part_size);
$part2 = fread($f_input,$part_size);
fclose($f_input);
$f_1 = fopen("part1.txt", "w");
$f_2 = fopen("part2.txt", "w");
fwrite($f_1, $part1);
fwrite($f_2, $part2);
fclose($f_1);
fclose($f_2);
?>
☘️ Green ☘️ Гуру (2755) Я уже догадался как это сделать, вопрос решён
Остальные ответы
Урфин Джус Просветленный (35130) 4 года назад
скачай тотал коммандер, там есть все инструменты как для разбивки, так и для сборки файлов.
☘️ Green ☘️Гуру (2755) 4 года назад
Мне нужно только на php
ALEX Мыслитель (7699) 4 года назад
заархивировать rar архиватором, разбивая на архивы по заданному объёму.
Похожие вопросы