Как скопировать файлы в одном цикле?

222
09 мая 2017, 02:38
public static void CopyPackFiles()
{
    var SB = new StringBuilder();
    bool Exists = Directory.Exists(@"C:\GamePack");
        try
        {
            if (!Exists)
            {
                Directory.CreateDirectory(str2 + folder);
                foreach (var file in new DirectoryInfo(GetPath()).GetFiles("*.d3d", SearchOption.TopDirectoryOnly))
                {
                    file.CopyTo(Path.Combine(str2, file.Name));
                }
                foreach (var file2 in new DirectoryInfo(GetPath() + folder).GetFiles("*.ini", SearchOption.TopDirectoryOnly))
                {
                    file2.CopyTo(Path.Combine(str2 + folder, file2.Name));
                }
            }
        }
        catch (IOException e) { SB.AppendLine(e.ToString()); }
        catch (SecurityException e) { SB.AppendLine(e.ToString()); }
        catch (Exception e) { SB.AppendLine(e.ToString()); }
        File.WriteAllText("Error.log", SB.ToString());
}

Как сделать копирование файлов в 1 часть папки, а 2 часть во внутреннею папку с использование Linq ?

Можно ли обойтись без вторичного цикла ( где копируется во внутреннею папку файлы)?!

Нужно ли использовать в этом примере Task ?

Answer 1
string targetBaseFolder = str2;
string targetSubFolder = Path.Combine(targetBaseFolder, folder); // один раз, а не в цикле
Directory.CreateDirectory(targetSubFolder);
string sourceFolder = GetPath();
string sourceSubfolder = Path.Combine(sourceFolder, folder); 
CopyFiles(sourceFolder, targetBaseFolder, "*.d3d"); 
CopyFiles(sourceSubfolder, targetSubFolder, "*.ini");
private static void CopyFiles(string from, string to, string searchPattern)
{
    // SearchOption.TopDirectoryOnly - значение по умолчанию
    foreach (var file in Directory.GetFiles(from, searchPattern)) 
    { 
        File.Copy(file, Path.Combine(to, Path.GetFileName(file)));
    }
}

LINQ не нужен. Task - в зависимости от того, кто вызывает этот код, и ожидает ли он асинхроности

READ ALSO
Правильно ли организован код?

Правильно ли организован код?

Очень смущает "зависимость" методов:

249
Кодировка массива строк

Кодировка массива строк

Добрый вечерВозникают проблемы с кодировкой

186
С# WindowsForms WebBrowser

С# WindowsForms WebBrowser

Здравствуйте! Я хочу создать приложение для ПК на C# я сам пока новичокДля графического интерфейса я выбрал windows forms Приложение основывается...

260
Помогите реализовать обновление данных в WPF

Помогите реализовать обновление данных в WPF

Господа, помогите реализовать грамотное обновление данных

258