Member 10570811 Ответов: 2

Копирование файлов из приложения winform


у меня есть один пакетный exe вместе с файлами.я хочу скопировать файлы в расположенный путь из кнопки form1 click.after компиляции, когда я нажимаю кнопку его работы, но если я беру приложение form1 на рабочий стол, то я попытался нажать кнопку, но файлы не копируются в путь.

ниже приведен мой проверенный код.

пожалуйста помогите

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

private void button1_Click(object sender, EventArgs e)
        {
            //File path where you need to copy
            string configFilePath = @"C:\Windows\Files\";
            try
            {
                if (!Directory.Exists(configFilePath))
                {
                    
                    Directory.CreateDirectory(configFilePath);
                }
                //File path where you are stored in the solution itself
                string SourceFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Files\");
                string[] sourceFiles = Directory.GetFiles(SourceFilePath);
                foreach (var file in sourceFiles)
                {
                    File.Copy(file, configFilePath + Path.GetFileName(file), true);
                }
            }
            catch (Exception)
            {
            }

2 Ответов

Рейтинг:
1

OriginalGriff

Мы не можем помочь вам в этом: у нас нет доступа к stings или к файловой системе, к которой они относятся.
Предполагая, что на рабочем столе не установлен отладчик (если он установлен, просто используйте его, это будет намного быстрее), добавьте протоколирование к вашему коду выше, чтобы записать различные строки и путь, который код проходит через код. Затем вы можете проверить это после сбоя, чтобы узнать, что код ожидал быть там, и проверить это в файловой системе.

Но ... не проглатывайте исключения: наиболее вероятная вещь, которая здесь происходит, заключается в том, что что-то там выбрасывает исключение (вполне вероятно, CreateDirectory), и вы отбрасываете эту информацию в catch блок. try ... catch это не "чудо-лекарство" от проблем, это поможет вам справиться с ними и решить реальную проблему. Проглатывание исключения вместо того, чтобы сообщать или регистрировать его, просто означает, что вы понятия не имеете, почему возникла проблема, и часто даже если это произошло, пока не станет слишком поздно.


Рейтинг:
1

phil.o

То AppDomain.CurrentDomain.BaseDirectory изменяется при перемещении исполняемого файла. Есть большие шансы, что рабочий стол не содержит никакого каталога "файлы".

Вы можете изготовить SourceFilePath переменная так, чтобы она больше не зависела от местоположения исполняемого файла (т. е. предоставляла статический полный путь к этой переменной).

Или вы можете создать ярлык на рабочем столе (вместо копирования исполняемого файла).

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

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

Надеюсь, это поможет.


Member 10570811

да,мне нужно сделать план использования этого приложения на другом computer.in эту основу я пробовал,но застрял здесь

phil.o

Поэтому предоставьте в своем приложении настройку, в которой вы сможете настроить путь к исходным файлам для каждого пользователя/компьютера.
Здесь вы найдете руководство по этой функциональности, которое довольно быстро реализовать, как только вы поймете, как ее использовать.
Использование настроек приложения и пользовательских настроек
Уверяю вас, это стоит того, чтобы посмотреть.