Попытка переместить файлы из одной папки в другую с помощью подпапок C#
Я хочу реорганизовать все фотографии из одной папки в подпапки другого пути, где я хочу создать новые подпапки, названные с датами создания файла.
Пример:
photo1.png (дата создания 12.02.2015)
photo2.png (дата создания 12.02.2015)
photo3.png (дата создания 13.02.2015)
-> создать две подпапки: "12-Фев-2015" с photo1.png и photo2.png и "13-Фев-2015" с photo3.png
Я написал код для копирования фотографий в другую папку и создаю подпапку с текущей датой. Но я не знаю, как создать подпапки, названные в честь даты создания файлов.
public class SimpleFileCopy
{
static void Main(string[] args)
{
// Specify what is done when a file is changed, created, or deleted.
string fileName = "*.png";
string sourcePath = @"C:\tmp";
string targetPath = @"U:\\";
// Use Path class to manipulate file and directory paths.
string sourceFile = Path.Combine(sourcePath, fileName);
//string destFile = Path.Combine(Directory.CreateDirectory("U:\\" + DateTime.Now.ToString("dd-MMM-yyyy") , fileName);
// To copy a folder's contents to a new location:
// Create a new target folder, if necessary.
if (!Directory.Exists("U:\\" + Directory.CreateDirectory("U:\\" + DateTime.Now.ToString("dd-MMM-yyyy"))))
{
Directory.CreateDirectory("U:\\" + Directory.CreateDirectory("U:\\" + DateTime.Now.ToString("dd-MMM-yyyy")));
}
else
// To copy a file to another location and
// overwrite the destination file if it already exists.
{
foreach (var file in new DirectoryInfo(sourcePath).GetFiles(fileName))
{
try
{
file.CopyTo(e.FullPath.Combine(targetPath + Directory.CreateDirectory("U:\\" + DateTime.Now.ToString("dd-MMM-yyyy")), file.Name));
}
catch { }
}
}
}
}
1 ответ
У вас есть путь ко многим Directory.CreateDirectory
звонки. Просто перечислите файлы исходной папки, а затем получите дату с file.CreationTime
, вызов Directory.CreateDirectory
(независимо от того, существует ли он уже), а затем скопируйте файл.
string fileName = "*.png";
string sourcePath = @"C:\tmp";
string targetPath = @"U:\";
foreach (var file in new DirectoryInfo(sourcePath).GetFiles(fileName))
{
var targetFolderName = file.CreationTime.ToString("dd-MMM-yyyy");
var dir = Directory.CreateDirectory(Path.Combine(targetPath, targetFolderName));
file.CopyTo(Path.Combine(dir.FullName, file.Name), true);
}