Member 14844823 Ответов: 1

Сравните и удалите дочерний каталог до и после, если существует родительский каталог


Привет, нужно иметь какую-то идею или решение по нижеприведенному утверждению.

Допустим, я поместил 3 пути в список.

Путь 1-- D:\Images\HV9411FP87_Lot1\_Vision1\Fail\123.jpg

Путь 2-- D:\Images\HV9411FP87_Lot1\_Vision1\Fail

Путь 3-- D:\Images\HV9411FP87_Lot1\_Vision1\Fail\1234.jpg

Вопрос 1: Когда я выбираю путь 2, добавленный в список, мне нужно, чтобы путь 1 был удален из списка.

Вопрос 2: поскольку путь 2 будет копировать все файлы .jpg внутри пути, давайте предположим, что путь 1 был удален (решите вопрос 1), Если я выберу путь 2, после этого, если вы хотите выбрать путь 3, он не позволит мне так выбрать путь 3 из-за того, что все файлы изображений уже скопированы из Пути 2.

В настоящее время я использую C# WPF.

Что я уже пробовал:

В настоящее время я пытаюсь добавить список из treeview. после завершения добавления нажмите кнопку, чтобы сохранить весь путь в список.

Maciej Los

Вы хотите получить уникальные каталоги?

Member 14844823

Да. Если я добавлю путь 2 в список, он будет иметь только путь 2. Это происходит потому, что если я добавлю путь 2, значит, он скопирует все изображения в папку Fail.

Если я не добавил путь 2 в список, я могу просто добавить путь 1 и путь 3. это потому, что я буду идти каждое отдельное изображение (путь 1 и путь 3) и скопировать его.

Maciej Los

🤔

Richard MacCutchan

Где находится код, копирующий эти файлы, и почему это влияет на содержимое существующих путей?

Member 14844823

Разработаю код для копинга файлов после того, как найду решение для вопроса 1 и вопроса 2, так как буду копировать файлы из списка.

Потому что это может повлиять на время копирования. Как я знаю, я могу использовать overwrite = true, когда File.Copy.

Richard MacCutchan

Ну, я боюсь, что ваш вопрос не имеет смысла. Для чего предназначены эти три пути и что вы подразумеваете под ними? "это не позволит мне так выбрать путь 3 из-за того, что все файлы изображений уже скопированы из Пути 2"?

1 Ответов

Рейтинг:
0

phil.o

Вы могли бы использовать Path.GetRelativePath(String, String) Метод (System.IO) | Microsoft Docs[^] чтобы проверить, является ли добавленный путь относительным к другим:

string pathToAdd = @"the\path\to\add";
if (!theList.Any(p => Path.GetRelativePath(p, pathToAdd) == p))
{
   // None of existing paths is relative to the new path, so add it
   theList.Add(pathToAdd);
}


Maciej Los

Выглядит идеально для меня ;)

phil.o

Спасибо :)