|
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
|
||||||
.NET 3.x Копирование папок и подпапок по нажатию кнопки02.08.2017, 12:39. Показов 6141. Ответов 19
Метки нет (Все метки)
Решил заняться c# для себя, ради интереса. Решил сделать программу "библиотеку", достающую дистрибутивы из сети и запускающую их.
Следовательно, нужно, чтобы по нажатию кнопки дистрибутив копировался на локальный диск, и после запускался от имени администратора. Однако я никак не могу понять, как это сделать. Посмотрел кучу примеров копирования папок, но ни один из них не получается "засунуть" в кнопку, поскольку сразу кучу ошибок либо с переменными, либо с классами, либо еще с чем. так как же запихать копирование (и далее) в кнопку?
0
|
||||||
| 02.08.2017, 12:39 | |
|
Ответы с готовыми решениями:
19
Копирование папок и подпапок
|
|
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
|
||||||
| 02.08.2017, 14:55 | ||||||
|
Здесь нет ничего сложного. Для копирования файла достаточно воспользоваться классом File. Например:
0
|
||||||
|
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
|
|
| 02.08.2017, 15:23 | |
|
Почтальон,
в этом классе есть метод и для перемещения File.Move(path, path2);
0
|
|
|
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
|
|||||||||||
| 02.08.2017, 15:23 [ТС] | |||||||||||
|
нужно не один файл. А полную структуру папок и подпапок.
Я нашел такой способ,
Далее я уже развиваю свою идею - нужен прогресс бар, ибо порой копирование идет по 5-10 минут. А следовательно, как я понимаю, надо делать отдельные методы, и с кнопок уже ссылки на них. И вот тут я уже вообще запутался. Для начала хочу сделать отдельный метод на копирование. Но не понимаю как сделать так, чтобы кнопка передавала значения (strings) в нужный метод, вызывая его. к примеру:
Далее прогресс бар как-то приделать к этому надо...
0
|
|||||||||||
|
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
|
|
| 02.08.2017, 15:29 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
|
|
| 02.08.2017, 15:43 [ТС] | |
|
Как все сложно оказывается (тут должна быть картинка фейспалма) .
Что-то я, похоже, заработался. Спасибо.
0
|
|
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
||||||||||||
| 02.08.2017, 16:51 | ||||||||||||
1
|
||||||||||||
|
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
|
|
| 02.08.2017, 17:45 [ТС] | |
|
А как сделать, чтобы все файлы и папки перезаписывались?
И вообще не понимаю как привязать прогресс бар к копированию. Ну вообще. Что нужно для этого? Может у кого есть ссылка для чтения соответствующая?
0
|
|
|
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
|
|||
| 02.08.2017, 17:58 | |||
|
последняя булевая переменная отвечает за перезапись.
1
|
|||
|
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
|
||||||
| 04.08.2017, 12:47 [ТС] | ||||||
|
В общем, я понял, что ничего не понял. А с потоками вообще.
Не могли бы помочь и на конкретном примере показать как сделать поток на копирование? Что куда вставлять. Может на конкретном примере что-то пойму, и дальше смогу сделать. Спасибо.
0
|
||||||
|
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
|
||||||
| 04.08.2017, 13:46 | ||||||
|
Не буду лезть с советами, что неплохо бы теорию почитать.
Лучше приведу пример. Допустим, что я копирую файлы из папки с екзешником на рабочий стол. У меня рабочий стол обычно девственно чист и видно, что там появляется.
1
|
||||||
|
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
|
||||||||||||||||||||||
| 10.08.2017, 13:35 [ТС] | ||||||||||||||||||||||
|
Вернее просто не могу адаптировать общие примеры под мой конкретный случай. Тут вариантов два. Либо уж садиться изучать буквально с нуля, по "школьным учебникам". Либо вот выклянчивать конкретные примеры по форумам ![]() Вот, например, с прогресс баром. Количество файлов высчитал, хорошо. Метод копирования сделал, хорошо. Прогресс бар сделал, хорошо. Простая прокрутка по количеству файлов прогресс бара работает. И все. Как передать переменную количества файлов в прогресс бар? Рылся рылся в теории - и зарылся. Если напрямую вызывать метод прогресс бара - то ясно. А вот не напрямую? Создание глобальной переменной - опять же в теории все отлично, а на практике... Так же прогрессбар не работает в отдельном потоке. Вот тут уже даже в теории я не понял что надо делать. То есть, по факту, "а воз и ныне там". Имеется: Кнопка:
То есть мне надо сделать, в первую очередь, передачу переменной в прогресс бар. гуглеж подсказал только этот вариант. но этот вариант не работает, т.к. прогресс бар в основном потоке (форме?), и если запускать рассчет количества файлов в потоке (как оно нужно, по логике), то выбивает ошибку. Второе - связать прогресс бар с самим копированием. Тут в принципе не знаю как делать. Теоретически, по ссылке выше - понятно. Что и как писать конкретно...
0
|
||||||||||||||||||||||
|
56 / 43 / 27
Регистрация: 19.12.2013
Сообщений: 204
|
|||||||||||
| 10.08.2017, 17:09 | |||||||||||
|
Почитайте msdn. Если верить официальной документации, а причин не верить у меня нет, то никаких потоков в случае копирования файлов с прогрессбаром не нужно.
Например этот пример: https://msdn.microsoft.com/ru-... .110).aspx.aspx в конце страницы. Перепишем ваш метод CopyDirs () так:
После чего вызовем его так:
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
|
||||||
| 11.08.2017, 10:30 [ТС] | ||||||
|
Спасибо.
Но потоки все-таки нужны. Если все в одном потоке делать, то вся программа просто зависает до конца копирования. В таком ключе прогресс бар вообще не нужен - программа висит, и ничего не показывает ![]() Как я понимаю, надо само окно прогресс бара в отдельном от копирования потоке запустить. Добавлено через 15 минут Вот нашел, как сделать. Теоретически. Сдается мне, что секрет вот тут раскрыт, да вот... "Гляжу в книгу, вижу фигу".
0
|
||||||
|
911 / 796 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|
| 11.08.2017, 10:45 | |
|
kerok, Сделай backgroundworker, и через него сделаешь свой прогрессбар. У него есть методы на изменение значений, после каждой иттерации даёшь +1 деление из N
0
|
|
|
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
|
||||||||||||||||
| 11.08.2017, 11:18 [ТС] | ||||||||||||||||
|
Это мне, считай, все заново придется все изучать
![]() Я посмотрел про него мельком. И решил, что попробую разобраться так. Если уж ничего не выйдет, тогда как запасной вариант) В общем, сделал я так. Вроде работает, но с маленькой неточностью - при полном копировании прогресс бар заполняется не полностью, а процентов на 80. Можете подсказать, что тут не так?
PS. Маленькая догадка нуба - он не считает папки. То есть считает макс количество вместе с папками, а заполняет прогресс бар только на копирование файлов. Или это я пальцем в небо? Добавлено через 5 минут PPS. Проверил практическим путем. Так и есть. Достаточно ли будет просто убрать вот это?
Добавлено через 1 минуту Все, большое спасибо за разъяснения. Вроде разобрался. В конечном итоге такое получилось.
Я только что осознал, что на эту фигню у меня ушло 8 дней
0
|
||||||||||||||||
| 11.08.2017, 13:40 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 02.08.2017
Сообщений: 9
|
||||||
| 11.08.2017, 15:20 [ТС] | ||||||
|
Так, выскочила другая ошибка.
Метод копирования директорий крашится при копировании одного файла. Говорит, неправильно указана папка. Оно и логично, если я указываю конкретный один файл. Это можно обойти, или для файла придется создавать другой метод? Строчка с ошибкой:
0
|
||||||
| 11.08.2017, 15:38 | |
|
Не по теме: ???? Ты что ещё не скопировал? Столько дней прошло!!! Уже можно было полностью свой механизм копирования написать!!!
0
|
|
| 11.08.2017, 15:38 | |
|
Помогаю со студенческими работами здесь
20
Подсчет кол-ва папок и подпапок PowerPoint. Установка папок, подпапок Получение путей папок и подпапок
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|