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

本文关键字:文件夹 驱动器 何使用 搜索 | 更新日期: 2023-09-27 18:28:23

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

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

使用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);
    }
}

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

Directory.GetDirectories(path, searchPattern);

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

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

以下函数将帮助您执行此操作,这将接受两个参数

  1. 要搜索的目录名
  2. 基本目录(在其中执行搜索操作)是可选的

将收集目录中的文件并移动到特定位置(如果存在)

    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");