我在父目录中有一个目录列表。这些目录将以 00001、00002、00003... 等格式创建,因此尾随数字较大的目录是最近的目录。在上面的例子中,它是 00003。我想以编程方式得到它。
谢谢你的帮助..
我在父目录中有一个目录列表。这些目录将以 00001、00002、00003... 等格式创建,因此尾随数字较大的目录是最近的目录。在上面的例子中,它是 00003。我想以编程方式得到它。
谢谢你的帮助..
试试这个:
var first = Directory.GetDirectories(@"C:\")
.OrderByDescending(x => x).FirstOrDefault();
显然替换C:\
为父目录的路径。
为什么不做这样的事情:
string[] directories = Directory.GetDirectories(@"C:\temp");
string lastDirectory = string.Empty;
if (directories.Length > 0)
{
Array.Sort(directories);
lastDirectory = directories[directories.Length - 1];
}
.NET 2:
private void button1_Click(object sender, EventArgs e) {
DirectoryInfo di = new DirectoryInfo(@"C:\Windows");
DirectoryInfo[] dirs = di.GetDirectories("*",
SearchOption.TopDirectoryOnly);
Array.Sort<DirectoryInfo>(dirs,
new Comparison<DirectoryInfo>(CompareDirs);
}
int CompareDirs(DirectoryInfo a, DirectoryInfo b) {
return a.CreationTime.CompareTo(b.CreationTime);
}
关于什么:
var greaterDirectory =
Directory.GetDirectories(@"C:\")
.Select(path => Path.GetFileName(path)) // keeps only directory name
.Max();
或者
var simplest = Directory.GetDirectories(@"C:\").Max();
只需将 GetDirectories 或 GetFiles 的输出放在冒泡排序函数中即可。
private void SortFiles(FileSystemInfo[] oFiles)
{
FileSystemInfo oFileInfo = null;
int i = 0;
while (i + 1 < oFiles.Length)
{
if (string.Compare(oFiles[i].Name, oFiles[i + 1].Name) > 0)
{
oFileInfo = oFiles[i];
oFiles[i] = oFiles[i + 1];
oFiles[i + 1] = oFileInfo;
if (i > 0)
{
i--;
}
}
else
{
i++;
}
}
}