0

我已经为此苦苦挣扎了几天,无法弄清楚。

我需要从目录中最后创建的子目录复制文件,子目录还有一些子目录可以在我访问文件之前导航,这就是问题所在。

我希望我说清楚了,我将在下面给出一个目录示例,在此先感谢您的帮助。

C:\ProgramFiles\BuildOutput\mmh\LongTerm\**49**\release\MarketMessageHandler\Service\

以粗体突出显示的数字是我需要找到最新的子目录,并且在服务文件夹中是我需要从中复制文件的位置...

这是我尝试过的代码

字符串 sourceDir = @"\sttbedbsd001\BuildOutput\mmh\LongTerm\51\release\MarketMessageHandler\Service"; 字符串目标 = @"C:\Users\gwessels\Desktop\test\";

            string[] sDirFiles = Directory.GetFiles(sourceDir, "*", SearchOption.TopDirectoryOnly);

            string targetDir;

            if (sDirFiles.Length > 0)
            {
                foreach (string file in sDirFiles)
                {
                    string[] splitFile = file.Split('\\');
                    string copyFile = Path.GetFileName(file);
                    string source = sourceDir + "\\" + copyFile;

                    targetDir = target + copyFile;

                    try
                    {
                        if (File.Exists(targetDir))
                        {
                            File.Delete(targetDir);
                            File.Copy(source, targetDir);
                        }

                        else
                        {
                            File.Copy(source, targetDir);
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e);
                    }
                }
            }
4

1 回答 1

0

假设该LongTerm目录是已知的,因为它存储在某处(fe Application-Settings):

string longTermDirectory = Properties.Settings.Default.LongTermDirectory;
DirectoryInfo dir = new DirectoryInfo(longTermDirectory);
dir.Create(); // does nothing if it already exists
int Number = int.MinValue;
DirectoryInfo latestFolder = dir.EnumerateDirectories("*.*", SearchOption.AllDirectories)
    .Where(d => int.TryParse(d.Name, out Number))
    .Select(Directory => new { Directory, Number })
    .OrderByDescending(x => x.Number)
    .Select(x => x.Directory)
    .First();

Directory.EnumerateDirectorieswithSearchOption.AllDirectories递归地枚举所有目录。Enumerable.OrderByDescending使用目录名称的编号将按数字和最高的顺序排列它们(因此 50 在 49 之前和 100 在 99 之前)。

于 2012-12-12T10:59:38.500 回答