powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / детский вопрос, копирование подпок в папке
18 сообщений из 18, страница 1 из 1
детский вопрос, копирование подпок в папке
    #38472552
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите ребенку скопировать файлы и подпапки из папки.
Файлы сейчас копируются, а подпапки нет.
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            //string KO_FS = "c:\\Arc_keys\\ko_fs";
            string sourcePath = @"C:\Arc_keys\ko_fs";
            string fileName = "test.txt";
            string targetPath = @"b:\";
            string destFile = System.IO.Path.Combine(targetPath, fileName);
            //Console.WriteLine("Привет");
            //Console.Read();
            Process.Start("c:\\temp\\vfd\\vfd.exe", "START").WaitForExit();
            //Console.Read();
            Process.Start("c:\\temp\\vfd\\vfd.exe", "link b:").WaitForExit();
            Process.Start("c:\\temp\\vfd\\vfd.exe", "open b: /144").WaitForExit();
            // копируем на виртуальную дискетку дискетку ko-fs
            if (System.IO.Directory.Exists(sourcePath))
            {
                string[] files = System.IO.Directory.GetFiles(sourcePath);

                // Copy the files and overwrite destination files if they already exist.
                foreach (string s in files)
                {
                    // Use static Path methods to extract only the file name from the path.
                    fileName = System.IO.Path.GetFileName(s);
                    destFile = System.IO.Path.Combine(targetPath, fileName);
                    System.IO.File.Copy(s, destFile, true);
                }
            }
            Console.Read();

        }
    }
}
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38472642
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так у тебя GetFiles. Про папки ни слова.
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38472647
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
System.IO.Directory.GetDirectories ещё есть
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38472765
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BelavikSystem.IO.Directory.GetDirectories ещё есть
с System.IO.Directory.GetDirectories обойтись без рекурсии можно?
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38472767
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewIvanovecBelavikSystem.IO.Directory.GetDirectories ещё есть
с System.IO.Directory.GetDirectories обойтись без рекурсии можно?
Я не пробовал и не читал, но было бы странно, чтобы для этого ещё и рекурсия понадобилась. Допиши и проверь, тебе там вставить то пару строчек кода
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38472815
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38472884
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не получается у меня с File.Copy поэтому пробую указать команду копирования,
которая в батнике проходит.
В c# почему-то эта команда не проходит.
Код: c#
1.
Process.Start("xcopy c:\\Arc_keys\\ko_fs b:\\ //s//e").WaitForExit(); 


Ошибка такая:
System.ComponentModel.Win32Exception не обработано
HResult=-2147467259
Message=Не удается найти указанный файл
Source=System
ErrorCode=-2147467259
NativeErrorCode=2
StackTrace:
в System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
в System.Diagnostics.Process.Start()
в System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
в System.Diagnostics.Process.Start(String fileName)
в ConsoleApplication.Program.Main(String[] args) в C:\Users\sivov\Documents\Visual Studio 2010\Projects\ConsoleApplication\ConsoleApplication\Program.cs:строка 25
в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
InnerException:
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473195
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewIvanovecне получается у меня с File.Copy поэтому пробую указать команду копирования,
которая в батнике проходит.
В c# почему-то эта команда не проходит.
Код: c#
1.
Process.Start("xcopy c:\\Arc_keys\\ko_fs b:\\ //s//e").WaitForExit(); 



Ошибка такая:
System.ComponentModel.Win32Exception не обработано
HResult=-2147467259
Message=Не удается найти указанный файл
Source=System
ErrorCode=-2147467259
NativeErrorCode=2
StackTrace:
в System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
в System.Diagnostics.Process.Start()
в System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
в System.Diagnostics.Process.Start(String fileName)
в ConsoleApplication.Program.Main(String[] args) в C:\Users\sivov\Documents\Visual Studio 2010\Projects\ConsoleApplication\ConsoleApplication\Program.cs:строка 25
в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
InnerException:

Мне кажется, что не может она найти файл )
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473197
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikNewIvanovecне получается у меня с File.Copy поэтому пробую указать команду копирования,
которая в батнике проходит.
В c# почему-то эта команда не проходит.
Код: c#
1.
Process.Start("xcopy c:\\Arc_keys\\ko_fs b:\\ //s//e").WaitForExit(); 




Ошибка такая:
System.ComponentModel.Win32Exception не обработано
HResult=-2147467259
Message=Не удается найти указанный файл
Source=System
ErrorCode=-2147467259
NativeErrorCode=2
StackTrace:
в System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
в System.Diagnostics.Process.Start()
в System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
в System.Diagnostics.Process.Start(String fileName)
в ConsoleApplication.Program.Main(String[] args) в C:\Users\sivov\Documents\Visual Studio 2010\Projects\ConsoleApplication\ConsoleApplication\Program.cs:строка 25
в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
в System.Threading.ThreadHelper.ThreadStart()
InnerException:

Мне кажется, что не может она найти файл )
А чем File.Copy не угодило?
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473206
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473221
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ http://codearticles.ru/articles/1021
Это твой сайт?
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473237
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikЯ не пробовал и не читал, но было бы странно, чтобы для этого ещё и рекурсия понадобилась.

А в чем проблема то? Самое органичное решение для такого рода задач. И код получается простой.
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473243
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikЭто твой сайт?
Да.
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473250
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79BelavikЯ не пробовал и не читал, но было бы странно, чтобы для этого ещё и рекурсия понадобилась.

А в чем проблема то? Самое органичное решение для такого рода задач. И код получается простой.


Иллюстрация рекурсивного обхода дерева каталогов с копированием файлов (без каких-либо проверок)
Код: 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.
    class Program
    {
        static void Main(string[] args)
        {
            Copy(Path.Combine(Directory.GetCurrentDirectory(), "source"), Path.Combine(Directory.GetCurrentDirectory(), "target"));
        }

        static void Copy(string sourceDir, string targetDir)
        {
            DirectoryInfo sourceDirectory = new DirectoryInfo(sourceDir);
            DirectoryInfo targetDirectory = new DirectoryInfo(targetDir);
            
            if (false == targetDirectory.Exists)
                targetDirectory.Create();

            Array.ForEach(
                sourceDirectory.GetFiles(),
                f => f.CopyTo(Path.Combine(targetDirectory.FullName, f.Name)));

            Array.ForEach(
                sourceDirectory.GetDirectories(),
                d => Copy(d.FullName, Path.Combine(targetDir, d.Name)));
        }
    }

...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473313
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79BelavikЯ не пробовал и не читал, но было бы странно, чтобы для этого ещё и рекурсия понадобилась.

А в чем проблема то? Самое органичное решение для такого рода задач. И код получается простой.
Рекурсивный поиск нужен если требуется получить список всех файлов и вложенных директорий в данной директории. А зачем это если просто надо скопировать содержимое одной директории?
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473329
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikРекурсивный поиск нужен если требуется получить список всех файлов и вложенных директорий в данной директории. А зачем это если просто надо скопировать содержимое одной директории?

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

А так то безусловно, городить свой велосипед вместо использования xcopy имеет смысл при наличии иных ограничений. Например, я кое-какие проекты делаю в Mono. Там xcopy нету.
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473337
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
решение:
Process.Start("xcopy.exe", sourcePath + " " + targetPath).WaitForExit();
...
Рейтинг: 0 / 0
детский вопрос, копирование подпок в папке
    #38473339
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / детский вопрос, копирование подпок в папке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]