Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找文件夹中的所有文件_C#_File_Directory - Fatal编程技术网

C# 查找文件夹中的所有文件

C# 查找文件夹中的所有文件,c#,file,directory,C#,File,Directory,我想创建一个程序,在我的桌面上查找特定类型的所有文件,并将它们放入特定的文件夹中,例如,我会将所有带有.txt的文件放入文本文件夹中 有没有什么好的方法来实现这一点?谢谢 我试过这个: string startPath = @"%userprofile%/Desktop"; string[] oDirectories = Directory.GetDirectories(startPath, ""); Console.WriteLine(oDirectories.Length.ToString(

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

未能成功找到所有文件。

您可以尝试使用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