ZXNet эхоконференция «zxnet.pc»


тема: копирование директорий (удивительное рядом)



от: Kirill Frolov
кому: All
дата: 05 Apr 2003
============================================================================= * Forwarded by Kirill Frolov (500:812/1.507) * Area : ru.dos (ru.dos) * From : Nick Mikhailenko, 2:5020/194.118 (03 Apr 03 06:13) * To : All * Subj : копирование директорий (удивительное рядом) ============================================================================= RealName Михайленко Hиколай Hиколаевич Hello All! Казалось бы при копировании файлов никаких неясностей быть не может, однако ... Исходная конфигурация файлов. В скобках слева указан файл, содержащийся в данном подкаталоге ▌▐ └──Y └──Y └──Y (yfile) └──Z (zfile) Результат копирования: YY -> \n разными файловыми менеджерами NC.EXE v 5.0 1995 г VC.COM v 4.05 2000 г FAR.EXE v 1.70b4 2002 г F5: YY -> \n Смотрите, подкаталог Z скопировался дважды ▌▐ └──Y ├──Z (zfile) └──Y (yfile) ├──Y (yfile) │ └──Z (zfile) └──Z (zfile) Win 98, xcopy YY /e здесь фишка в том, что копируется не каталог YY, а его _содержимое_ Получается, вот что ▌▐ └──Y (yfile) ├──Y │ └──Y (yfile) │ └──Z (zfile) └──Z (zfile) Win 98, Проводник VC.COM v 4.99.08а 2000 г CC.EXE freeware 2003 г ▌▐ └──Y └──Y (yfile) ├──Y (yfile) │ └──Z (zfile) └──Z (zfile) Угадайте с трёх раз, какой вариант копирования является правильным Посмотрите, как копируются директории под линуксом Алгоритм копирования дерева директорий ══════════════════════════════════════ Hужно учесть следующие обстоятельства: 1. Спускаясь в новую директорию, сначала копируем все её файлы и только потом переходим к подкаталогам 2. Подкаталоги вида Y(Y)... копируем в последнюю очередь (все подкалоги в цепочке имеют одно и тоже имя) 3. Если при подъёме по дереву директорий выходим в каталог такого вида, то процесс копирования считается завершённым ══════════════════════════════════════ Я полагал задачу решённой, однако Витя Хименко усомнился, что исправленный алгоритм копирования охватывает все случаи. Я ему сказал решительное - нет. Hо вскоре сам придумал контрпример. Создайте цепочку XYXYX и скопируйте XYX -> \n Коммандер на СИ обламался и скопировал подкаталог Z дважды Зато эксплорер виндов 98 и волк 08a сработали верно. Ума не приложу, как они этого добиваются. Для себя я решил, что хватит усложнять алгоритм копирования. Практического значения это не имеет. Примеры вымученные. А пользователю надо знать, что не следует копировать ветку директорий вверх с перекрытием себя. А если очень хочется, то сделайте это в два этапа с промежуточной целью. Сначала куда-то вбок, а потом куда надо. Кстати, подобным образом, в два этапа можно скопировать директорию _в себя_. При этом никакого размножения директорий с одинаковым именем не произойдёт. ========================================================================== С уважением Nick -+- Берегите букву ё ! nick@mccme.ru Proton-S developer + Origin: http://nick.anihost.ru - выбери строй (2:5020/194.118) ============================================================================= Hемедленно нажми на RESET, All!




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Проходилка - Описание-проходилка игры: Приключение Буратино.
Chat - рассуждения о хакерах
Семь и 1/2 - Анекдоты.
Нусс, почитаем - Психоз пятый, как никак с опозданием больше чем в год, но все-таки вышел.
Юмор - Ромашковый двигатель.

В этот день...   8 мая