Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 07.09.2022
Сообщений: 9

Консольное приложение для копирования файлов из одной папки в другую

17.09.2022, 09:09. Показов 1404. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Это основное задание:
(Насколько я понимаю, его можно сделать с помощью конструции "try_catch_finally", обрабатывая все возможные исключения, но я только начал изучать c#, так что лучше, чтобы опытные бойцы показали, как действительно надо орудовать c#-ом)

В файлике хранится :
1) Абсолютный путь к исходной папке (откуда копируем)
2) Абсолютный путь к конечной папке (куда копируем)

При запуске программы происходит создание папки с временным штампом в конечной папке и копирование в неё всех доступных файлов из исходной. Требуется обрабатывать ситуации с невозможностью доступа к файлам в исходной папке.


Дополнительное задание:

Файл настроек имеет формат JSON.
* Есть возможность указать несколько исходных папок.
* Ведется журналирование процесса копирования. Каждый запуск создает свой файл журнала. Уровень журналирования можно указать в файле настроек.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2022, 09:09
Ответы с готовыми решениями:

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

Создайте командный файл копирования файлов заданного типа (с помощью команды COPY) из одной папки в другую
Создайте командный файл копирования файлов заданного типа (с помощью команды copy) из одной папки в другую. В качестве первого...

Батник для переноса файлов, с определенным названием из одной папки в другую
Здравствуйте, прошу помочь, задача следующая: Есть "папка А" с большим количество .jpg, там как те что нужно перенести, так и те...

6
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
18.09.2022, 13:05
paimei,
Цитата Сообщение от paimei Посмотреть сообщение
создание папки с временным штампом в конечной папке
что это значит, какой вид должно иметь и для чего оно нужно?
0
0 / 0 / 0
Регистрация: 07.09.2022
Сообщений: 9
18.09.2022, 19:46  [ТС]
AndreyVorobey,
может быть, просто вставка "tmp" в имени папки, хз. Насколько я понимаю, на это можно не обращать внимания. Просто копируем файлы из одной папки в другую и обрабатываем эксэпшены.
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
18.09.2022, 21:03
Цитата Сообщение от paimei Посмотреть сообщение
создание папки с временным штампом в конечной папке
AndreyVorobey, paimei,
на сколько я понял задание:
некоторая папка А мониторится и копируется в папку В, причем каждая копия содержимого папки А помещается в подпапку каталога В со штампом времени в названии. Префикс будет название исходной папки.
Цитата Сообщение от paimei Посмотреть сообщение
и обрабатываем эксэпшены
Ну так обрабатывайте. Не смогли получить доступ к некоторому файлу -> запись в журнал и пошел копировать следующий...
1
0 / 0 / 0
Регистрация: 07.09.2022
Сообщений: 9
19.09.2022, 11:12  [ТС]
wizard41, Ну так я хз, как это сделать на c#...

Добавлено через 27 секунд
wizard41, Думаю да, вы праильно пняли задание)
0
Эксперт JavaЭксперт по электроникеЭксперт .NET
 Аватар для wizard41
3415 / 2736 / 575
Регистрация: 04.09.2018
Сообщений: 8,588
Записей в блоге: 3
20.09.2022, 13:57
Лучший ответ Сообщение было отмечено paimei как решение

Решение

paimei, значится так:
Рядом с exe ложим файл с настройками (пути папок) filepath.txt следующего содержания:
Code
1
2
C:\TempC
D:\TempD
Мне с JSON'ом возится не охота, переделаешь потом сам.

Далее, создаем каталог источник с содержимым:


Пишем код. Класс-копировщик:
static class FileCopier
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
    internal static class FileCopier
    {
        static string settingfile = Path.GetDirectoryName(Environment.ProcessPath) + "\\filepath.txt";
        static string[]? paths; 
 
        public static void Run()
        {
            string timestamp = DateTime.Now.ToString()
                .Replace(".", string.Empty)
                .Replace(" ", "-")
                .Replace(":", string.Empty);
 
            string destfolder;
 
            try
            {
                paths = File.ReadAllLines(settingfile);
                destfolder = $"{paths[1]}\\{paths[0].Split('\\').Last()}_{timestamp}";
            }
            catch (Exception e)
            {
                Console.WriteLine("Что-то не так с файлом настроек!\n" + e);
                // здесь запись в лог
                return;
            }
 
 
            // Читаем все папки и файлы из каталога-источника
            string[] folders = Directory.GetDirectories(paths[0], "*", SearchOption.AllDirectories);
            string[] files = Directory.GetFiles(paths[0], "*.*", SearchOption.AllDirectories);
 
 
            try
            {
                if (!Directory.Exists(destfolder))
                    Directory.CreateDirectory(destfolder);
 
                // здесь запись в лог
            }
            catch (Exception e)
            {
                Console.WriteLine("Ошибка создания каталога назначения!\n" + e);
                // здесь запись в лог
            }
 
 
            //Создаем идентичную структуру папок из источника
            foreach (string sourceFolder in folders)
            {
                try
                {
                    Directory.CreateDirectory(sourceFolder.Replace(paths[0], destfolder));
                    // здесь запись в лог
                }
                catch (Exception e)
                {
                    Console.WriteLine($"Ошибка создания каталога {sourceFolder}!\n" + e);
                    // здесь запись в лог
                }
            }
 
 
            //Копируем все файлы из источника в новый каталог
            foreach (string sourceFile in files)
            {
                try
                {
                    File.Copy(sourceFile, sourceFile.Replace(paths[0], destfolder), true);
                    // здесь запись в лог
                }
                catch (Exception e)
                {
                    Console.WriteLine($"Ошибка копирования файла {sourceFile}!\n" + e);
                    // здесь запись в лог
                }
            }
 
            Console.WriteLine($"Все файлы и папки скопированы со штампом: {timestamp}");
        }
    }

И основная программа:
C#
1
2
3
4
using ConsoleApp1;
 
FileCopier.Run();
Console.ReadKey();
Запускаем...


В папке назначения создалась копия структуры и файлов папки-источника во вложенном каталоге со штампом времени:


Запустим еще раз...

Теперь тут две папки с разными штампами, содержащие каталоги-источники.
Копирование происходит при каждом запуске программы один раз.
Вот тебе затравка, начни с этого. А дальше подводи под требования своей задачи.
В т.ч. добавь класс Логгера. Мне лень.
1
0 / 0 / 0
Регистрация: 07.09.2022
Сообщений: 9
08.10.2022, 07:27  [ТС]
wizard41, Спасибо, мужик, здраво изложил! Будем раззбираться...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2022, 07:27
Помогаю со студенческими работами здесь

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

Копирование файлов из одной папки в другую, но с пропуском одинаковых файлов в этих папках
Доброго времени суток. Прошу помощи в написании батника. Задача: Есть папка А с файлами 1,2,3 и папка Б с этими же файлами 1,2 и 3. ...

Копирование файлов из одной папки в другую
Добрый день! Нашел на форуме хорошую функцию копирования файлов из одной папки в другую. Но там жестко прописан путь откуда и куда...

Перенос файлов из одной папки в другую
Добрый день. помогите создать Батник Задача в том что бы Батник выполнял перенос файлов с одной папки в другую. Есть папка...

Копирование файлов из одной папки в другую
Привет форумчане нужна помощь. Нужен скрипт который будет копировать с одной папки в другую При этом перед тем как скопировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru