我正在做一個專案,我要做的是在一些檔案夾中進行迭代,只復制它們的子檔案夾并粘貼到某個不同的位置。
這是檔案夾結構:
-Folder1
--subfolder1
---test.doc
---test.pdf
---test.xlsx
--subfolder2
---test.mp3
---test.pdf
---test.eml
-Folder2
--subfolder4
---test2.pdf
---test2.msg
---test2.eml
--subfolder3
---test4.msg
---test4.eml
---test4.pdf
現在,我想做的是從他們的父母中“提取”子檔案夾并將它們復制到不同的目錄中。最后結構必須是這樣的:
--subfolder1
--subfolder2
--subfolder3
(當然里面有對應的檔案)
這是我到目前為止所嘗試的,但它似乎并沒有做我想要的確切的事情,它只是復制了所有檔案夾,它們在目標目錄中的顯示方式以及父檔案夾也是如此。
static void CopyDirectory(string sourceDir, string destinationDir, bool recursive)
{
// Get information about the source directory
var dir = new DirectoryInfo(sourceDir);
// Check if the source directory exists
if (!dir.Exists)
throw new DirectoryNotFoundException($"Source directory not found: {dir.FullName}");
// Cache directories before we start copying
DirectoryInfo[] dirs = dir.GetDirectories();
// Create the destination directory
Directory.CreateDirectory(destinationDir);
// Get the files in the source directory and copy to the destination directory
foreach (FileInfo file in dir.GetFiles())
{
string targetFilePath = Path.Combine(destinationDir, file.Name);
file.CopyTo(targetFilePath);
}
// If recursive and copying subdirectories, recursively call this method
if (recursive)
{
foreach (DirectoryInfo subDir in dirs)
{
string newDestinationDir = Path.Combine(destinationDir, subDir.Name);
CopyDirectory(subDir.FullName, newDestinationDir, true);
}
}
}
先感謝您。
uj5u.com熱心網友回復:
在遞回函式中,您必須創建另一個回圈,該回圈在子檔案夾中進行迭代,然后您只需將檔案復制到新目錄中。基本上是這樣的:
if (recursive)
{
foreach (DirectoryInfo subDir in dirs)
{
DirectoryInfo[] Subdirs = subDir.GetDirectories();
foreach (DirectoryInfo subDir2 in Subdirs)
{
string newDestinationDir = Path.Combine(destinationDir, subDir2.Name);
CopyDirectory(subDir2.FullName, newDestinationDir, true);
Console.WriteLine("Finnished copying file: " subDir2.Name);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/416827.html
標籤:
上一篇:讀取檔案并在C中列印內容
