Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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_Copy - Fatal编程技术网

C# 删除文件名的子路径并创建文件结构

C# 删除文件名的子路径并创建文件结构,c#,file,directory,copy,C#,File,Directory,Copy,我有以下列表文件名被传递给我的方法, 我想从中删除子路径并创建遗漏的文件结构 string subPath = "C:\\temp\\test" List<string> filesIncoming = new List[]{@"C:\temp\test\a.txt", @"C:\temp\test\intest\a.txt"}; string outputDir = "C:\\temp3\\temp"; 这就是我正在尝试的 foreach (var file in files)

我有以下
列表文件名
被传递给我的方法, 我想从中删除子路径并创建遗漏的文件结构

string subPath = "C:\\temp\\test"
List<string> filesIncoming = new List[]{@"C:\temp\test\a.txt", @"C:\temp\test\intest\a.txt"};
string outputDir = "C:\\temp3\\temp";
这就是我正在尝试的

foreach (var file in files)
{
    var directory = Path.GetDirectoryName(file);
    DirectoryInfo source = new DirectoryInfo(directory);

    var fileName = Path.GetFileName(file);
    var destDir = Path.Combine(destinatonFilePath, source.Name); //how do I remove sub-path from source.Name and combine the paths properly?
    CreateDirectory(new DirectoryInfo(destDir));
    File.Copy(file, Path.Combine(destDir, fileName), true);
}

我认为您应该使用旧的good string.Replace从传入文件中删除公共基路径,并将其替换为输出文件的公共基路径

string subPath = "C:\\temp\\test"
string outputDir = "C:\\temp3\\temp";

foreach (var file in files)
{
    // Not sure how do you have named these two variables.
    string newFilePath = file.Replace(subPath, outputDir); 
    Directory.CreateDirectory(Path.GetDirectoryName(newFilePath));
    File.Copy(file, newFilePath, true);
}
string subPath = "C:\\temp\\test"
string outputDir = "C:\\temp3\\temp";

foreach (var file in files)
{
    // Not sure how do you have named these two variables.
    string newFilePath = file.Replace(subPath, outputDir); 
    Directory.CreateDirectory(Path.GetDirectoryName(newFilePath));
    File.Copy(file, newFilePath, true);
}