Пётр Кунилов | Репутация: 140(Кандидат)
23 мая 2009 в 20:49
Пример реализации задачи - копирования файлов и поддиректорий из заданной директории в другую
using System;
using System.IO;
class CopyDir
{
// Метод копирования: задаем две директории откуда копировать и куда копировать
public static void Copy(string sourceDirectory, string targetDirectory)
{
DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);
// Вызываем основной метод копирования
CopyAll(diSource, diTarget);
}
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
// Если директория для копирования файлов не существует, то создаем ее
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
// Копируем все файлы в новую директорию
foreach (FileInfo fi in source.GetFiles())
{
// Выводим информацию о копировании в консоль
Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
// Копируем рекурсивно все поддиректории
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
// Создаем новую поддиректорию в директории
DirectoryInfo nextTargetSubDir =
target.CreateSubdirectory(diSourceSubDir.Name);
// Опять вызываем функцию копирования
// Рекурсия
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
// Проверяем работу копирования на примере
public static void Main()
{
string sourceDirectory = @"c:\sourceDirectory";
string targetDirectory = @"c:\targetDirectory";
Пётр Кунилов | Репутация: 140(Кандидат)
23 мая 2009 в 21:00
Из ниже приведенного примера следует, что
Информацию о папке можно получить использую объект класса DirectoryInfo
DirectoryInfo directoryInfo = new DirectoryInfo(@"C:\Directory");
1) Получить список файлов в папке можно так
FileInfo[] files = source.GetFiles();
2) Обход всех файлов папки можно сделать так
foreach (FileInfo file in files)
{
// Выполняем действия с файлом
}
3) Получить список всех подпапок в папке можно так
DirectoryInfo[] directories = directory.GetDirectories();
4) Обход всех подпапок в папке можно сделать так
foreach (DirectoryInfo subDirectory in directories)
{
// Выполняем действия с подпапками
}
Пример реализации задачи - копирования файлов и поддиректорий из заданной директории в другую
using System;
using System.IO;
class CopyDir
{
// Метод копирования: задаем две директории откуда копировать и куда копировать
public static void Copy(string sourceDirectory, string targetDirectory)
{
DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);
// Вызываем основной метод копирования
CopyAll(diSource, diTarget);
}
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
// Если директория для копирования файлов не существует, то создаем ее
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
// Копируем все файлы в новую директорию
foreach (FileInfo fi in source.GetFiles())
{
// Выводим информацию о копировании в консоль
Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
// Копируем рекурсивно все поддиректории
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
// Создаем новую поддиректорию в директории
DirectoryInfo nextTargetSubDir =
target.CreateSubdirectory(diSourceSubDir.Name);
// Опять вызываем функцию копирования
// Рекурсия
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
// Проверяем работу копирования на примере
public static void Main()
{
string sourceDirectory = @"c:\sourceDirectory";
string targetDirectory = @"c:\targetDirectory";
Copy(sourceDirectory, targetDirectory);
}
}
Подробнее: здесь