2016-10-10 2 views
0

Я хочу реорганизовать все фотографии из одной папки во вложенные папки другого пути, где я хочу создать новые подпапки с датами создания файла.Попытка перемещения файлов из одной папки в другую с подпапками 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 { } 
      } 
     } 
    } 
} 
+0

Возможный дубликат [Если папка не существует, создайте его] (http://stackoverflow.com/questions/9065598/if-a-folder-does-not-exist-create-it) – Liam

+0

Подождите ... ваш уже созданный каталог? Тогда ваш вопрос не имеет смысла? Что именно вы застряли? – Liam

+0

Вы создаете dirs на основе DateTime.Now, это база вашего вопроса? –

ответ

0

У вас есть способ для многих звонков 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); 
} 
Смежные вопросы