查找文件夹中的所有文件
我正在寻找创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你正在处理的扩展名的文件名,而不是像上面的例子那样命名所有的文件。
考虑到这一点,你也可以检查出DirectoryInfo
和FileInfo
类。 这些工作方式相似,但您可以更轻松地获取有关path/文件名,扩展名等的信息
看看这些更多的信息:
http://msdn.microsoft.com/en-us/library/system.io.directory.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, "...."); }