我几天来一直在努力解决这个问题,无法弄明白。
我需要从目录中最后创建的子目录中复制文件,子目录也有一些子目录,以便在我到达文件之前进行导航,这就是问题所在。
我希望我明白这一点,我将举例说明以下目录,提前感谢您的帮助。
C:\ProgramFiles\BuildOutput\mmh\LongTerm\**49**\release\MarketMessageHandler\Service\
以粗体突出显示的数字是我需要找到最新的子目录,而在services文件夹中我需要从中复制文件......
这是我试过的代码
string sourceDir = @“\ sttbedbsd001 \ BuildOutput \ mmh \ LongTerm \ 51 \ release \ MarketMessageHandler \ Service”; string target = @“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);
}
}
}
答案 0 :(得分:0)
假设LongTerm
目录已知,因为它存储在某处(例如,应用程序设置):
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.EnumerateDirectories
的 SearchOption.AllDirectories
以递归方式枚举所有目录。带有目录名号码的Enumerable.OrderByDescending
将以数字顺序排列,并且最高位(在49之前为50,在99之前为100)。