Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Склеивание частей файла в один файл
 
 автор: opex   (20.02.2007 в 21:34)   письмо автору
 
 

В папке есть разные файлы, в том числе с именами <имя файла>.part00001, <имя файла>.part00005 и т.д. Нужно найти эти файлы, и вывести на экран, каких частей не хватает. Каждый такой файл занимает 1.5 Мб, последний может занимать меньше. Необходимо учесть, что в этой же папке есть файлы вида <другое имя файла>.part00001, недостающие также нужно вывести. Еще, если файл занимает не 1.5 мб, то сообщить об этом.

   
 
 автор: cheops   (20.02.2007 в 21:56)   письмо автору
 
   для: opex   (20.02.2007 в 21:34)
 

Хм... так файлы склеивать или только проверить целостность архива?

   
 
 автор: opex   (21.02.2007 в 12:34)   письмо автору
 
   для: cheops   (20.02.2007 в 21:56)
 

Только проверить целостность. Причем номер последней части не известен, но скорее всего она занимает не 1.5 Мб

   
 
 автор: cheops   (21.02.2007 в 13:47)   письмо автору
 
   для: 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); 
?> 

   
 
 автор: opex   (21.02.2007 в 19:09)   письмо автору
 
   для: cheops   (21.02.2007 в 13:47)
 

Огромное спасибо, хороший пример.

   
 
 автор: Unkind   (21.02.2007 в 19:41)   письмо автору
 
   для: opex   (21.02.2007 в 19:09)
 

Причем номер последней части не известен
Но тогда и нельзя быть точно увереным, что файл, который разделили, и правда цел. Может не хватать последнего куска.

   
 
 автор: Trianon   (21.02.2007 в 19:53)   письмо автору
 
   для: Unkind   (21.02.2007 в 19:41)
 

или даже нескольких

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования