查找文件夹中的所有文件

Oli*_*r K 46 c# directory file

我希望创建一个程序,在我的桌面上找到某种类型的所有文件,并将它们放入特定的文件夹中,例如,我将所有带有.txt的文件放入Text文件夹中.

任何想法是什么最好的方法来实现这一目标?谢谢.

我试过这个:

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

它找不到所有文件都不成功.

dts*_*tsg 98

很多这些答案实际上都不起作用,自己尝试过.放手一搏:

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);
}
Run Code Online (Sandbox Code Playgroud)

它会将桌面上的所有.txt文件移动到该文件夹TextFiles.

  • 完善.谢谢. (3认同)

Ger*_*uis 9

首先; 最佳做法是获取用户桌面文件夹

string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
Run Code Online (Sandbox Code Playgroud)

然后你可以找到所有类似的文件

string[] files = Directory.GetFiles(path, "*.txt", SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)

请注意,使用上面的行,您将在登录用户和所有子文件夹的Desktop文件夹中找到所有扩展名为.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");
}
Run Code Online (Sandbox Code Playgroud)

请注意,您必须在Copy()(或Move())操作中包含文件名.所以你必须找到一种方法来确定至少你正在处理的扩展名的文件名,而不是像上面例子中那样命名所有文件.

考虑到这一点,您还可以查看DirectoryInfoFileInfo课程.它们以类似的方式工作,但您可以更轻松地获取有关路径/文件名,扩展名等的信息

查看这些以获取更多信息:

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


Agh*_*oub 5

您可以尝试使用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, "....");
 }     
Run Code Online (Sandbox Code Playgroud)

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