C# 查找文件夹中的所有文件
我想创建一个程序,在我的桌面上查找特定类型的所有文件,并将它们放入特定的文件夹中,例如,我会将所有带有.txt的文件放入文本文件夹中 有没有什么好的方法来实现这一点?谢谢 我试过这个:C# 查找文件夹中的所有文件,c#,file,directory,C#,File,Directory,我想创建一个程序,在我的桌面上查找特定类型的所有文件,并将它们放入特定的文件夹中,例如,我会将所有带有.txt的文件放入文本文件夹中 有没有什么好的方法来实现这一点?谢谢 我试过这个: string startPath = @"%userprofile%/Desktop"; string[] oDirectories = Directory.GetDirectories(startPath, ""); Console.WriteLine(oDirectories.Length.ToString(
string startPath = @"%userprofile%/Desktop";
string[] oDirectories = Directory.GetDirectories(startPath, "");
Console.WriteLine(oDirectories.Length.ToString());
foreach (string oCurrent in oDirectories)
Console.WriteLine(oCurrent);
Console.ReadLine();
未能成功找到所有文件。您可以尝试使用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, "....");
}
首先;最佳做法是使用
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
类。
它们的工作方式类似,但您可以更容易地获得有关路径/文件名、扩展名等的信息
查看这些以了解更多信息:
这些答案中有很多实际上是行不通的,我自己也试过了。试一试:
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
您尝试了什么?我建议您从和类开始。不要文件。复制将一个文件复制到另一个文件?你是说File.Move
?我想他会明白的;)但为了完整起见,我添加了两个选项。没问题;)但是,在foreach循环中,这仍然会失败,因为您给每个文件指定了相同的文件名newFilename.txt