|
|
|
| В папке есть разные файлы, в том числе с именами <имя файла>.part00001, <имя файла>.part00005 и т.д. Нужно найти эти файлы, и вывести на экран, каких частей не хватает. Каждый такой файл занимает 1.5 Мб, последний может занимать меньше. Необходимо учесть, что в этой же папке есть файлы вида <другое имя файла>.part00001, недостающие также нужно вывести. Еще, если файл занимает не 1.5 мб, то сообщить об этом. | |
|
|
|
|
|
|
|
для: opex
(20.02.2007 в 21:34)
| | Хм... так файлы склеивать или только проверить целостность архива? | |
|
|
|
|
|
|
|
для: cheops
(20.02.2007 в 21:56)
| | Только проверить целостность. Причем номер последней части не известен, но скорее всего она занимает не 1.5 Мб | |
|
|
|
|
|
|
|
для: opex
(20.02.2007 в 21:34)
| | Можно отталкиваться от следующего скрипта (без учёта размера)
<?php
// Открываем директорию
$dirname = ".";
$dir = opendir($dirname);
$num = array();
// В цикле считываем её содержимое
while(($file = readdir($dir)) !== false)
{
// Если текущий объект является файлом - проверяем его
if(is_file($dirname."/".$file))
{
// Извлекаем из имени файла расширение
$ext = strrchr($file, ".");
if(preg_match("|\.part([\d]+)|", $ext, $out))
{
$num[] = $out[1];
}
}
}
sort($num);
$max = max($num);
for($i = 1; $i <= max($num); $i++)
{
if(!in_array($i, $num)) printf("Файл %06d отсутствует <br>", $i);
}
// Закрываем директорию
closedir($dir);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(21.02.2007 в 13:47)
| | Огромное спасибо, хороший пример. | |
|
|
|
|
|
|
|
для: opex
(21.02.2007 в 19:09)
| | Причем номер последней части не известен
Но тогда и нельзя быть точно увереным, что файл, который разделили, и правда цел. Может не хватать последнего куска. | |
|
|
|
|
|
|
|
для: Unkind
(21.02.2007 в 19:41)
| | или даже нескольких | |
|
|
|