Предположим, у меня есть Directory 1 и Directory 2, и у каждого из них могут быть файлы или подкаталоги внутри них. То, что я до сих пор есть, если я хочу, чтобы переименовать «Справочник 2» в «Каталог 3», я могу запустить:C# Переименовать каталог, скопировать все содержимое Если каталог уже существует
Directory.Move("path\Directory 2", "path\Directory 3");
Это прекрасно работает - переименовывает каталог, все подкаталоги и файлы в этом рабочем каталоге штрафа с новым именем, без копий.
Однако, если я пытаюсь сделать это:
Directory.Move("path\Directory 2", "path\Directory 1");
Я получаю сообщение об ошибке, потому что каталог 1 уже существует. В этом случае, если Directory 2 не сможет быть переименован в каталог 1, все содержимое (файлы и подкаталоги) в Каталоге 2 должно просто переместиться в каталог 1. Какой самый простой способ сделать это? Должен ли я иметь файл if, foreach для перемещения всех подкаталогов и foreach для перемещения всех файлов? Есть ли более простой способ перегрузить функцию .Move для перемещения файлов независимо от ошибок существования?
Так в принципе, хорошая стратегия может быть, чтобы сделать функцию, которая выполняет следующее: Если (папка не существует) -> просто использовать .move Если (папка существует) -> запустить функцию на каждом подкаталоге Таким образом, я могу рекурсивно переименовать каждый каталог и подкаталог, и если они уже существуют, просто переместите материал внутри. Правильно ли это? – Jake
Несомненно, посмотрите связанную статью, у нее уже есть одна :) –
Хе-хе, это намного проще! Благодаря! – Jake