如何仅将文件夹名称存储为数组而不存储while路径(C#)

时间:2016-10-06 20:01:57

标签: c#

所以我知道如何存储完整路径但不仅仅是结束文件夹名称,例如我已经有了一个数组,但有没有任何方法可以从所有数组中删除某些字符或只是从中获取文件夹名称路径?

编辑:string [] allFolders = Directory.GetDirectories(目录);       这就是我用来获取所有文件夹名称的东西,但这让我得到了整条路径 编辑:它们需要存储在数组

编辑:抱歉,我需要一个包含" mpbeach"," blabla","键盘"等值的数组。而不是E:\ Zmod \ idk \ DLC列表生成器\ DLC列表生成器由Frazzlee \,所以基本上不是完整路径

3 个答案:

答案 0 :(得分:4)

这很有效。

string[] allFolders = Directory.EnumerateDirectories(directory)
            .Select(d => new DirectoryInfo(d).Name).ToArray();

这也有效。差异在于我们使用的是List<string>而不是string[]

List<string> allFolders = Directory.EnumerateDirectories(directory)
                          .Select(d => new DirectoryInfo(d).Name).ToList();

示例1:使用string[] allFolders

测试文件夹

enter image description here

在VS IDE中,在调试模式下

enter image description here

示例2:使用List<string> allFolders

测试文件夹

enter image description here

在VS IDE中,在调试模式下

enter image description here

示例2:使用string[] allFolders

答案 1 :(得分:2)

不需要字符串操作......只需使用DirectoryInfo

var allFolders = new DirectoryInfo(directory).GetDirectories()
                .Select(x => x.Name)
                .ToArray();

答案 2 :(得分:-6)

注意我正在提问您如何从文件网址中提取最后一个文件夹名称。其他人正在阅读这个如何提取目录中的文件夹名称。如果我错了,那是因为我误解了你的问题。

用反斜杠拆分以获取文件夹。倒数第二个值是最后一个文件夹:

string folder = @"c:\mydrive\testfolder\hello.txt";
string[] parts = folder.Split('\\');
string lastFolder = parts[parts.Length - 1];
//Yields "testfolder";

将其向前移动到您想要的位置:

 private string[] foldersOnly(){
  List<string> folders = new List<string>();
  string[] allFolders = Directory.GetDirectories(directory);
  foreach(string folder in allfolders){
       string[] parts = folder.Split('\\');
       folders.Add(parts[parts.Length-1]);
  }
  }
  return folders.ToArray();