Подтвердить что ты не робот

Найти все файлы в папке

Я ищу, чтобы создать программу, которая находит все файлы определенного типа на моем рабочем столе и помещает их в определенные папки, например, я бы имел все файлы с .txt в папке "Текст".

Любые идеи, каким лучшим способом было бы это сделать? Спасибо.

Я пробовал это:

string startPath = @"%userprofile%/Desktop";
string[] oDirectories = Directory.GetDirectories(startPath, "");
Console.WriteLine(oDirectories.Length.ToString());
foreach (string oCurrent in oDirectories)
    Console.WriteLine(oCurrent);
Console.ReadLine();

Не удалось найти все файлы.

4b9b3361

Ответ 1

Многие из этих ответов на самом деле не будут работать, сами пробовав их. Дайте это:

string filepath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
DirectoryInfo d = new DirectoryInfo(filepath);

foreach (var file in d.GetFiles("*.txt"))
{
      Directory.Move(file.FullName, filepath + "\\TextFiles\\" + file.Name);
}

Он переместит все .txt файлы на рабочий стол в папку TextFiles.

Ответ 2

Прежде всего; лучшей практикой было бы получить папку "Рабочий стол" пользователя с помощью

string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

Затем вы можете найти все файлы с чем-то вроде

string[] files = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories);

Обратите внимание, что в приведенной выше строке вы найдете все файлы с расширением .txt в папке "Рабочий стол" зарегистрированного пользователя и всех подпапок.

Затем вы можете скопировать или переместить файлы, перечислив вышеприведенную коллекцию, например

// For copying...
foreach (string s in files)
{
   File.Copy(s, "C:\newFolder\newFilename.txt");
}

// ... Or for moving
foreach (string s in files)
{
   File.Move(s, "C:\newFolder\newFilename.txt");
}

Обратите внимание, что вам нужно указать имя файла в вашей операции Copy() (или Move()). Таким образом, вам нужно будет найти способ определить имя файла, по крайней мере, с расширением, с которым вы имеете дело, и не называть все файлы такими же, как в предыдущем примере.

С учетом этого вы также можете проверить классы DirectoryInfo и FileInfo. Они работают аналогично, но вы можете получить более подробную информацию о своих путях/именах файлов, расширениях и т.д.

Проверьте их для получения дополнительной информации:

http://msdn.microsoft.com/en-us/library/system.io.directory.aspx

http://msdn.microsoft.com/en-us/library/ms143316.aspx

http://msdn.microsoft.com/en-us/library/system.io.file.aspx

Ответ 3

Вы можете попробовать с помощью Directory.GetFiles и исправить свой шаблон

 string[] files = Directory.GetFiles(@"c:\", "*.txt");

 foreach (string file in files)
 {
    File.Copy(file, "....");
 }

 Or Move

 foreach (string file in files)
 {
    File.Move(file, "....");
 }     

http://msdn.microsoft.com/en-us/library/wz42302f