如何只打印最后一个文件夹的数组名称

How to print only the last folder's name of array

代码如下所示:

DirectoryInfo d = new DirectoryInfo(@"c:\a\folder");
DirectoryInfo[] Dirs = d.GetDirectories();
foreach (var item in Dirs)
{ 
Console.WriteLine("The folders:{0}", item.ToString());
}

并打印出:

文件夹:c:\a\folder\foldertozip

但我只想打印 foldertozip。我怎样才能做到这一点? 谢谢你帮我。

您可以拆分并获得最后一个

item.ToString().Split("\").Last();

或者更好,使用 DirectoryInfo.Name 属性: https://docs.microsoft.com/en-us/dotnet/api/system.io.directoryinfo.name?view=netframework-4.8#System_IO_DirectoryInfo_Name

This Name property returns only the name of the directory, such as "Bin". To get the full path, such as "c:\public\Bin", use the FullName property.

只需将 item.ToString() 更改为 item.Name:

DirectoryInfo d = new DirectoryInfo(@"c:\a\folder");
DirectoryInfo[] Dirs = d.GetDirectories();
foreach (var item in Dirs)
{ 
    Console.WriteLine("The folders:{0}", item.Name);
}

item -> 将包含整个目录,因此,如果您只想要 Folder/SubFolder 的名称,那么执行 toString 不是一个选项

看到有方法 "Name",您可以通过在 console.WriteLine() 中调用 item.Name 来使用它,而不是 item.toString()

foreach (var item in Dirs)
{ 
    Console.WriteLine("The folders:{0}", item.Name());
}

或者您可以这样做:Getting the folder name from a path

我可能会使用类似的东西:

string path = "C:/folder1/folder2/file.txt";

string lastFolderName = Path.GetFileName( Path.GetDirectoryName( path ) );

对 GetDirectoryName 的内部调用将 return 完整路径,而对 GetFileName() 的外部调用将 return 最后一个路径组件 - 这将是文件夹名称。

无论路径是否实际存在,这种方法都有效。但是,这种方法确实依赖于最初以文件名结尾的路径。如果不知道路径是以文件名还是文件夹名结尾 - 那么它要求您首先检查实际路径以查看该位置是否存在 file/folder。