2017-02-20 3 views
0

У меня нет никаких проблем, когда я хочу, чтобы создать новую папку Я работаю сПроверка файлов и создание папок и перемещение файлов в C#

Directory.CreateDirectory

Теперь я пытаюсь получить все файлы изображения с моим рабочим столом, и я хочу, чтобы переместить все изображения в эту папку, которая была создана с Directory.CreateDirectory

Я testet file.MoveTo здесь

, чтобы здесь

file.MoveTo(@"C:\Users\User\Desktop\folder\test.txt"); 

Это отлично работает. Теперь я хочу, чтобы сделать это со всеми файлами изображений моего Dekstop

(Directory.CreateDirectory(@"C:\Users\User\Desktop\Images");) 

Как я могу сделать это?

+0

Возможный дубликат [Как рекурсивно список всех файлов в каталоге, в C#?] (http://stackoverflow.com/ вопросы/929276 /, как к recursi vely-list-all-the-files-in-a-directory-in-c) –

+0

Directory.GetFiles нормально, но я хочу переместить все изображения с рабочего стола на новую созданную папку на моем рабочем столе – newatstackoverflow

+1

Итак? Определите, какие файлы существуют, которые соответствуют вашим критериям (например, определенное расширение файла), и перемещайте их. Что тебя останавливает? –

ответ

1

Пожалуйста, попробуйте следующее:
Вы можете фильтровать файлы в определенном каталоге, а затем looop через результаты поиска, чтобы переместить каждый файл, вы можете быть в состоянии изменить шаблон поиска, чтобы соответствовать по ряду различных форматов файлов изображений

var files = Directory.GetFiles("PathToDirectory", "*.jpg"); 
    foreach (var fileFound in files) 
    { 
     //Move your files one by one here 
     FileInfo file = new FileInfo(fileFound); 
     file.MoveTo(@"C:\Users\User\Desktop\folder\" + file.Name); 
    } 
+0

Спасибо! Это полностью то, что мне нужно. – newatstackoverflow

+0

Но я попробовал его с файлами var = Directory.GetFiles (@ "C: \ Users \ User \ Desktop", "* .jpg"); foreach (var fileFound in files) { // Перемещение файлов по одному здесь FileInfo file = new FileInfo (fileFound); file.MoveTo (@ "C: \ Users \ User \ Desktop \ Images"); }, и я получаю сообщение об ошибке – newatstackoverflow

+0

Какая ошибка вы получаете? Не могли бы вы вставить его в комментарии? –

2

Пример кода получения изображений с некоторыми расширениями из одной корневой папке:

 static void Main(string[] args) 
     { 
     // path to desktop 
     var desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 

     //get file extentions by speciging the needed extentions 
     var images = GetFilesByExtensions(new DirectoryInfo(desktopPath) ,".png", ".jpg", ".gif"); 

     // loop thrue the found images and it will copy it to a folder (make sure the folder exists otherwise filenot found exception) 
     foreach (var image in images) 
     { 
      // if you want to move it to another directory without creating a copy use: 
      image.MoveTo(desktopPath + "\\folder\\" + image.Name); 

      // if you want to move a copy of the image use this 
      File.Copy(desktopPath + "\\"+ image.Name, desktopPath + "\\folder\\" + image.Name, true); 
     } 
     } 

    public static IEnumerable<FileInfo> GetFilesByExtensions(DirectoryInfo dir, params string[] extensions) 
    { 
     if (extensions == null) 
      throw new ArgumentNullException("extensions"); 

     var files = dir.EnumerateFiles(); 
     return files.Where(f => extensions.Contains(f.Extension)); 
    } 
+0

Спасибо, человек!Я это то, что я имею в виду ... У меня нет ошибок, но моя папка по-прежнему пуста, почему? – newatstackoverflow

+0

О, извините, я не работал со строкой searchPattern = "* .bmp" + "* .jpg"; – newatstackoverflow

+0

Я пробовал еще раз со строкой searchPattern = "* .bmp" + "* .jpg"; foreach (строка img в Directory.GetFiles (Environment.GetFolderPath (Environment.SpecialFolder.Desktop), searchPattern)) { FileInfo file = new FileInfo (img); file.MoveTo (@ "C: \ Users \ User \ Desktop \ Images"); } и моя папка по-прежнему пуста, я не знаю, почему – newatstackoverflow

Смежные вопросы