【发布时间】:2016-05-11 18:56:15
【问题描述】:
我有一个包含许多文件夹的目录,名称是始终升序的数字。
例子:
1
2
3
4
5
6
7
所以,假设他们在 c:\folders\ 里面
要获取最后一个文件夹 (7),我会这样做:
string[] folders = Directory.GetDirectories("c:\folders\", "*",
SearchOption.AllDirectories)
然后取字符串的最后一个元素。
但是这个目录有 5000 多个文件夹,所以运行 getdirectories 大约需要 1 分钟。
我为什么要这样做:
我有一个源目录和一个目标目录。我正在将源中的所有新文件夹及其内容复制到目标(是的,备份)。
这是我的代码目前所做的:
string[] directories = Directory.GetDirectories(source, "*",
SearchOption.AllDirectories);
foreach (string dirPath in directories)
Directory.CreateDirectory(dirPath.Replace(source, target));
foreach (string newPath in Directory.GetFiles(source, "*.*",
SearchOption.AllDirectories))
{
if (!File.Exists(newPath.Replace(source, target)) && !newPath.Contains("\\Temp\\"))
{
File.Copy(newPath, newPath.Replace(source, target), false);
}
}
获得最后一个文件夹后,我需要创建目录并仅将文件复制到源目录中紧随其后的文件夹中。
那么,我怎样才能更快地获得最高名称(编号)的文件夹?我可以创建一个 TXT 文件来跟踪最后插入的文件夹,但是拥有可以修改的额外文件并不是一个好方法。
啊,源包含一些带有字母的文件夹,例如 Temp。我想忽略那些文件夹,只获取名称只有数字的文件夹。
我知道这个问题听起来有点太宽泛了,我不是要求任何人做我的工作,我只是想要一个想法,经过一些研究后我没有找到合适的方法。
【问题讨论】: