如何使用C#搜索D驱动器中的文件夹

时间:2015-12-30 05:49:01

标签: c# winforms

我在D Drive中有一个文件夹(" App_data_payroll")。我需要找到这个文件夹,我需要复制该文件夹的文件,如果该文件夹有文件,我必须使用C#将这些文件粘贴到另一个文件夹中...

4 个答案:

答案 0 :(得分:1)

以下功能将帮助您完成此操作,这将接受两个参数

  1. 要搜索的目录名称
  2. 基本目录(执行搜索操作)是可选的
  3. 将收集目录中的文件并移动到特定位置(如果存在)

        private static void PerformFileCopy(string DirectoryToSearch, string BaseDirectory = @"D:\")
        {
            if (Directory.Exists(BaseDirectory))// check for existance of base directory to avoid throwing exception
            {
                var searchDir = Directory.GetDirectories(BaseDirectory).Where(x => new DirectoryInfo(x).Name == DirectoryToSearch).ToList();
                string copyToLocation = @"E:\newDir";
                if (searchDir.Count > 0) // True if such directory found
                {
                    foreach (var file in Directory.GetFiles(searchDir[0])) // will iterate if Directory has files
                    {
                        File.Copy(file, copyToLocation, true);
                    }
                }
            }
        }
    

    如何调用此方法:

    选项1:PerformFileCopy("App_data_payroll");

    选项2:PerformFileCopy("App_data_payroll",@"D:\BaseFolder\MyDir");

答案 1 :(得分:1)

使用GetDirectories查找文件夹路径,然后遍历文件夹中的每个文件。使用System.IO.File.Copy将文件复制到目标位置。

string dir = Directory.GetDirectories(@"D:\","App_data_payroll").FirstOrDefault();
string targetPath = "D:\CopyToFolder\";

if (System.IO.Directory.Exists(dir))
{
    string[] files = System.IO.Directory.GetFiles(dir);

    // Copy the files and overwrite destination files if they already exist.
    foreach (string s in files)
    {
        var fileName = System.IO.Path.GetFileName(s);
        var destFile = System.IO.Path.Combine(targetPath, fileName);
        System.IO.File.Copy(s, destFile, true);
    }
}

答案 2 :(得分:0)

尝试使用Directory.GetDirectories()获取与您的特定模式匹配的目录列表。

Directory.GetDirectories(path, searchPattern);

答案 3 :(得分:0)

您可以做的是首先检查指定路径上是否存在文件夹,如下所示:

if(Directory.Exists("path")) 

如果目录存在,您可以使用以下命令将其内容复制到另一个文件夹:

//copies all files in the folder
foreach(var file in Directory.GetFiles(sourceDir))
    File.Copy(file, Path.Combine(targetDir, Path.GetFileName(file)));
//copies all folders in the folder
foreach(var directory in Directory.GetDirectories(sourceDir))
    Copy(directory, Path.Combine(targetDir, Path.GetFileName(directory)));

参考:https://msdn.microsoft.com/en-us/library/system.io.directory.exists(v=vs.110).aspx