現在是這個問題: 我有很多代碼都做同樣的事情。也就是說,它將兩個文件夾的內容複製到目標文件夾中,並將它們合併到目標文件夾中。我的問題是,我找不到(經過很多谷歌搜索)如何實際複製源目錄+內容而不僅僅是其內容和子文件夾然後最終合併。如何將多個文件夾複製到另一個文件夾?
這可能是我如何獲取目錄:我使用文件夾選擇對話框,將路徑名添加到列表框(要顯示),然後從列表框中的項目創建(字符串)目錄列表。
這是目前爲止的代碼。 (有些來自MSDN)
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
if (source.FullName.ToLower() == target.FullName.ToLower())
{
return;
}
// Check if the target directory exists, if not, create it.
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
// Copy each file into it's new directory.
foreach (FileInfo fi in source.GetFiles())
{
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
// Copy each subdirectory using recursion.
foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
{
DirectoryInfo nextTargetSubDir =
target.CreateSubdirectory(diSourceSubDir.Name);
CopyAll(diSourceSubDir, nextTargetSubDir);
}
}
//This is inside a button click Method
List<string> pathList = new List<string>();
pathList = lstBox.Items.Cast<String>().ToList();
string sourceDirectory;
string targetDirectory;
DirectoryInfo dirSource;
DirectoryInfo dirTarget;
for (int i = 0 ; i < pathList.Count; i++)
{
sourceDirectory = pathList.ElementAt(i);
targetDirectory = browserSave.SelectedPath; //browserSave is the Folder Selection Dialog
dirSource = new DirectoryInfo(sourceDirectory);
dirTarget = new DirectoryInfo(targetDirectory);
CopyAll(dirSource, dirTarget);
}
煩人的C#沒有Directory.Copy函數,這將是非常有用的。 重述。
我選擇文件夾1. 我選擇文件夾2. 我選擇目的地文件夾。 I按OK。 預期結果:目標文件夾內有兩個文件夾,即文件夾1和文件夾2。兩者都有裏面的所有文件。 實際結果:目標文件夾合併了鬆散文件,並且源文件夾的子目錄完好無損。 (這是什麼煩人)
我希望這是足夠的信息,爲您的專業人士提供幫助。
如果您的函數將兩個String對象(源和目標路徑)作爲參數,則更簡潔的方法是。檢查接受答案在這裏:http://stackoverflow.com/questions/1066674/how-do-i-copy-a-folder-and-all-subfolders-and-files-in-net/1066707#1066707 – tpolyak
我已經做了更多的搜索,甚至添加了對Visual Basic DLL的引用 - 它有自己的CopyDirectory()方法。它完全一樣的問題。問題必須在於我如何獲取源目錄或其他內容。不知道...謝謝! – Sizza
@Sizza - 是的,這是你如何打電話給副本 - 看到我的答案。 – Hogan