查找文件夹中的所有文件

我正在寻找创build一个程序,find我的桌面上的某种types的所有文件,并将其放置到特定的文件夹中,例如,我将所有文件与.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(); 

没有find所有的文件。

很多这些答案实际上并没有工作,自己尝试了。 给这个去吧:

 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

首先, 最好的做法是获得用户的桌面文件夹

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

然后你可以find所有的文件

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

请注意,通过上面的这一行,您可以在login的用户和所有子文件夹的Desktop文件夹中find扩展名为.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() )操作中包含文件名。 所以你必须find一种方法来确定至less你正在处理的扩展名的文件名,而不是像上面的例子那样命名所有的文件。

考虑到这一点,你也可以检查出DirectoryInfoFileInfo类。 这些工作方式相似,但您可以更轻松地获取有关path/文件名,扩展名等的信息

看看这些更多的信息:

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

你可以尝试使用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