Как скопировать каталог, указанный в checkedListBox, в другой каталог?

Я пытаюсь сделать приложение, которое будет делать резервные копии папок перед переустановкой системы.

Что у меня есть сейчас, вы можете видеть выше. После нажатия кнопки 2 у меня появилось сообщение «Не удалось найти каталог« C:\Projects\WindowsFormsApplication2\WindowsFormsApplication2\bin\Debug.Desktop ».

Кажется, я не могу правильно указать полный путь к каталогу.

    public void button1_Click(object sender, EventArgs e)
    {

        string path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
        System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(patg);
        System.IO.FileSystemInfo[] files = di.GetDirectories();
        checkedListBox1.Items.AddRange(files);
    }


    private void button2_Click(object sender, EventArgs e)
    {
            foreach (object itemChecked in checkedListBox1.CheckedItems)
            {
                string P = Path.GetFullPath(itemChecked.ToString());
                DirectoryInfo di = new DirectoryInfo(P);
                FileSystem.CopyDirectory(P, @"P:\");
            }
    }

Я ожидаю, что пользователь может установить флажки из списка, а затем нажать кнопку «Копировать» (кнопка 2), которая скопирует папку в другое место. Я был бы очень признателен за вашу помощь!

Каково значение P, когда вы получаете исключение? Существует ли этот каталог? Когда вы получаете это исключение: во время new DirectoryInfo или во время CopyDirectory?

Harald Coppoolse 04.04.2019 15:55

@HaraldCoppoolse прав. Установите точку останова на строке, которая начинается с string P = … Проверяйте свои значения, перешагивайте по одной строке за раз. Дайте нам знать, что вы видите.

tgolisch 04.04.2019 17:16

Папка UserProfile содержит множество различных типов каталогов. Некоторые из них вообще не являются каталогами. Некоторые из них являются точками повторной обработки. В конечном итоге вы получите исключения AccessDenied. Или путь назначения будет содержать список папок странный. Вы должны управлять (более чем вероятными) исключениями, которые вы можете вызвать в этой процедуре. Кроме того, проверьте тип каталога, который вы собираетесь скопировать, и двигайтесь дальше, если это то, что вам не следует трогать (или вы не знаете, как с этим справиться).

Jimi 05.04.2019 01:03

@HaraldCoppoolse Значение P равно «C:\Projects[...]\bin\Debug.Desktop'».

Wis 05.04.2019 08:51

@HaraldCoppoolse Также я заметил, что когда исполняемый файл программы находится внутри %username%, он работает нормально, как я и хотел.

Wis 05.04.2019 08:52

@tgolisch Я также буду отмечать вас здесь для получения новой информации

Wis 05.04.2019 08:53
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
41
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, я нашел разрешение. Это была неправильная строка, выбранная из itemChecked. Правый это:

string P = itemChecked.FullName.ToString();

Другие вопросы по теме