7

我在父目录中有一个目录列表。这些目录将以 00001、00002、00003... 等格式创建,因此尾随数字较大的目录是最近的目录。在上面的例子中,它是 00003。我想以编程方式得到它。

谢谢你的帮助..

4

5 回答 5

8

试试这个:

var first = Directory.GetDirectories(@"C:\")
   .OrderByDescending(x => x).FirstOrDefault();

显然替换C:\为父目录的路径。

于 2010-01-19T11:05:27.740 回答
3

为什么不做这样的事情:

string[] directories = Directory.GetDirectories(@"C:\temp");
string lastDirectory = string.Empty;

if (directories.Length > 0)
{
    Array.Sort(directories);
    lastDirectory = directories[directories.Length - 1];
}
于 2010-01-19T11:08:08.237 回答
3

.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);
    }
于 2010-01-19T11:11:00.820 回答
1

关于什么:

var greaterDirectory =
    Directory.GetDirectories(@"C:\")
        .Select(path => Path.GetFileName(path)) // keeps only directory name
        .Max();

或者

var simplest = Directory.GetDirectories(@"C:\").Max();
于 2010-01-19T11:11:26.387 回答
1

只需将 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++;
            }
        }
    }
于 2013-01-10T05:37:09.140 回答