Windowsがフォルダーを実際にはファイルとフォルダーと見なすというランダムな問題が発生しています。ランダムなマシンで発生し、複製できません。.NET Directory.CreateDirectory メソッドを実行しています。
私は基本的にこのコードを実行しています:
string directoryToCreate = folderPath + @"\" + directoryName + @"\";
if (Directory.Exists(directoryToCreate ) == false)
Directory.CreateDirectory(directoryToCreate);
ディレクトリが作成されたら、そこに一連のファイルをコピーします。
フォルダー/ファイルはエクスプローラーに「ファイル」タイプとして表示されますが、同じ名前で別のファイルまたはフォルダーを作成することはできません。バックスラッシュの有無にかかわらずコードを試しましたが、違いはありません
これは、ディレクトリが作成された直後に呼び出されます。
private static void ProcessDirectoryForUpdating(string pNetworkFolder, string pLocalFolder)
{
DirectoryInfo networkFolder = new DirectoryInfo(pNetworkFolder);
DirectoryInfo localFolder = new DirectoryInfo(pLocalFolder);
try
{
foreach (DirectoryInfo tmpNetworkFolder in networkFolder.GetDirectories())
{
if (Directory.Exists(localFolder.FullName + @"\" + tmpNetworkFolder.Name) == false)
Directory.CreateDirectory(localFolder.FullName + @"\" + tmpNetworkFolder.Name);
ProcessDirectoryForUpdating(tmpNetworkFolder.FullName, localFolder.FullName + @"\" + tmpNetworkFolder.Name);
}
}
catch (Exception ex)
{
tracer.TraceEvent(TraceEventType.Error, 0, "ProcessDirectoryForUpdating: Error processing directory " + pNetworkFolder + " " + ex.Message);
}
foreach (FileInfo tmpNetworkFile in networkFolder.GetFiles())
{
try
{
if (File.Exists(localFolder.FullName + @"\" + tmpNetworkFile.Name) == false)
tmpNetworkFile.CopyTo(localFolder.FullName + @"\" + tmpNetworkFile.Name, true);
else if (tmpNetworkFile.LastWriteTime > (new DirectoryInfo(localFolder.FullName + @"\" + tmpNetworkFile.Name).LastWriteTime))
tmpNetworkFile.CopyTo(localFolder.FullName + @"\" + tmpNetworkFile.Name, true);
}
catch (Exception ex)
{
tracer.TraceEvent(TraceEventType.Error, 0, "ProcessDirectoryForUpdating: Error processing file " + tmpNetworkFile.FullName + " " + ex.Message);
}
}
}