Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разбить файл на части 
:(
    Опции темы
Borland_Delphi_6
Дата 15.1.2005, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

Репутация: 2
Всего: 20



Как можно разбить бинарник на части, чтобы его потом еще и собрать реально было? smile


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
<Spawn>
Дата 15.1.2005, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 1
Всего: 64



Так же как и в любом языке программирования, я думаю, т.е. читаешь некий большой файл нужными тебе блоками и пишешь все это в файлики нужного размера, дописывая, к примеру, к концу названия номер части. Обратным образом все пишешь в один файлsmile


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
maksar
Дата 15.1.2005, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 24.11.2003

Репутация: нет
Всего: нет



1.открываеш файл ($fp=fopen)
2.сщитываеш кусками по $n байт($kusok = fread($fp, $n)
3. записываеш fwrite($fp, $kosok)

скреплятется в обратном порядке
PM MAIL   Вверх
IZ@TOP
Дата 15.1.2005, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Думаю что это будет выглядеть примерно следующим образом:
Код
<?php


function SplitFile($File, $Out, $Prefix = '%oldname.part-%i') {
$CheckSum = md5_file($File);
$Size  = filesize($File);
$BlockSize = round($Size / $Out);
$_fh_infile = fopen($File, "rb") or die('Cannot open file');
$i = 1;
while(!feof($_fh_infile)) {
 $NextBlock  = fread($_fh_infile, $BlockSize);
 $NextFile  = str_replace(array('%i', '%oldname'), array($i, $File), $Prefix).'.sf';
 $_fh_outfile = fopen($NextFile, "wb") or die('Cannot create new file');
 fputs($_fh_outfile, $NextBlock) or die('Cannot write to out file');
 fclose($_fh_outfile);
 $i++;
}
fclose($_fh_infile);
$_fh_checkfile = fopen($File.'.md5', "w");
fputs($_fh_checkfile, $CheckSum);
}

function MergeFile($Param, $OutFile, $CheckFile, $AutoSearch, $Ext = 'sf') {
if($AutoSearch) {
 $_fh_dir = opendir($Param);
 while($ar = readdir($_fh_dir)) {
  if(preg_match("%^.*\.$Ext$%ui", $ar)) $Files[] = $Param.'/'.$ar;
 }
} else {
 $Files = $Param;
}
asort($Files);
$_fh_outfile = fopen($OutFile, "wb") or die('Cannot crete out file');
while($NextFile = array_shift($Files)) {
 $_fh_infile = fopen($NextFile, "rb");
 fputs($_fh_outfile, fread($_fh_infile, filesize($NextFile))) or die('Cannot write to out file');
 fclose($_fh_infile);
}
fclose($_fh_outfile);

$CheckSum = implode('', file($CheckFile));
if($CheckSum != md5_file($OutFile)) {
 echo $CheckSum.'<br>'.md5_file($OutFile);
 die('Merge file failed');
 unlink($OutFile);
}
}

/* Example split file:
SplitFile('file.mp3', 5);

Example merge file:
MergeFile('.', 'new-file.mp3', 'file.mp3.md5', true);
*/

?>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Borland_Delphi_6
Дата 16.1.2005, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

Репутация: 2
Всего: 20



Спасибо, отлично работает! Но как бы сделать так, чтобы файл любого размера разбивался на куски по 200 кб?


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
IZ@TOP
Дата 17.1.2005, 01:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Borland_Delphi_6, думаю что ты можешь это сообразить и без меня smile

Но вот тебе путь к разгадке:

Код

function SplitFile($File, $Out, $Prefix = '%oldname.part-%i') {
// ...
   $BlockSize = $Out;
// ...
}

SplitPage('file.mp3', (200*1024));


Думаю что тут понятно что происходит.
Добавлено @ 01:49
Borland_Delphi_6, кстате, вот тебе еще задание, там идет сортировка, но если кусков более 10, то части идут таким образом:
file-1
file-10
file-2

Попробуй с этим что-то сделать.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Borland_Delphi_6
Дата 17.1.2005, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


LoneLINEss
****


Профиль
Группа: Участник Клуба
Сообщений: 2509
Регистрация: 5.11.2002
Где: in fortune dreams ...

Репутация: 2
Всего: 20



Круто, мне уже модератор задание дает! smile Ладно, поглядим, попробуем, спасибки! smile


--------------------
Blind Guardian Fan :: BMSTU Student :: A polar bear is a rectangular bear after a coordinate transform.

Мои фотографии
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0467 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.