0

我遇到一个随机问题,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);
            }
        }

    }
4

0 回答 0