ここに問題があります。すべて同じことを行うコードがたくさんあります。つまり、2 つのフォルダーの内容をコピー先フォルダーにコピーし、それらをコピー先フォルダーにマージします。私の問題は、(多くのグーグルの後で)ソースディレクトリとコンテンツを実際にコピーする方法を見つけることができないことです.
ディレクトリを取得する方法かもしれません: フォルダ選択ダイアログを使用し、パス名をリストボックス (表示する) に追加してから、リストボックス内の項目から (文字列) ディレクトリのリストを作成します。
ここまでのコードです。(一部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 の 2 つのフォルダーがあります。どちらにもすべてのファイルが含まれています。実際の結果: デスティネーション フォルダには結合されていないファイルがあり、ソース フォルダのサブディレクトリはそのままです。(これは迷惑です)
これが専門家の助けとなるのに十分な情報であることを願っています。