查找文件夹中的所有文件

问题描述 投票:50回答:3

我想创建一个程序,在我的桌面上找到某种类型的所有文件,并将它们放置到特定的文件夹中,例如,我将所有带有.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();

没有成功找到所有的文件。

c# file directory
3个回答
107
投票

这些答案其实很多都不会用,自己试过。给这个去。

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.


9
投票

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

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())操作。因此,你必须找到一种方法来确定至少是你正在处理的扩展名的文件名,而不是像上面的例子那样,把所有的文件都命名为相同的名字。

考虑到这一点,你也可以检查一下 DirectoryInfoFileInfo 这些类的工作方式相同,但你可以更容易地获得有关你的路径--文件名、扩展名等信息。

查看这些,了解更多信息。

http:/msdn.microsoft.comen-uslibrarysystem.io.directory.aspx。

http:/msdn.microsoft.comen-uslibraryms143316.aspx。

http:/msdn.microsoft.comen-uslibrarysystem.io.file.aspx。


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, "....");
 }     

http:/msdn.microsoft.comen-uslibrarywz42302f。

© www.soinside.com 2019 - 2024. All rights reserved.