我想创建一个程序,在我的桌面上找到某种类型的所有文件,并将它们放置到特定的文件夹中,例如,我将所有带有.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();
没有成功找到所有的文件。
这些答案其实很多都不会用,自己试过。给这个去。
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);
然后,你可以用类似于这样的方法找到所有的文件。
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.comen-uslibrarysystem.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, "....");
}