从path获取文件夹名称

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

我可以使用什么对象或方法,给我一个folder2的结果?

我可能会使用像这样的东西:

 string path = "C:/folder1/folder2/file.txt"; string lastFolderName = Path.GetFileName( Path.GetDirectoryName( path ) ); 

GetDirectoryName的内部调用将返回完整path,而对GetFileName()的外部调用将返回最后一个path组件 – 这将是文件夹名称。

无论path是否真实存在,这种方法都有效。 然而,这种方法依赖于最初以文件名结尾的path。 如果不知道path是否以文件名或文件夹名称结尾 – 那么它需要检查实际path,以查看文件/文件夹是否位于第一个位置。 在这种情况下,丹·迪米特鲁的答案可能更合适。

尝试这个:

 string filename = @"C:/folder1/folder2/file.txt"; string FolderName = new DirectoryInfo(System.IO.Path.GetDirectoryName(filename)).Name; 

当path中没有文件名时,我使用下面的代码片段获取path的目录:

例如“c:\ tmp \ test \ visual”;

 string dir = @"c:\tmp\test\visual"; Console.WriteLine(dir.Replace(Path.GetDirectoryName(dir) + Path.DirectorySeparatorChar, "")); 

输出:

视觉

 var fullPath = @"C:\folder1\folder2\file.txt"; var lastDirectory = Path.GetDirectoryName(fullPath).Split('\\').LastOrDefault(); 

简单而干净。 只使用System.IO.FileSystem – 像一个魅力:

 string path = "C:/folder1/folder2/file.txt"; string folder = new DirectoryInfo(path).Name; 

下面的代码有助于获取文件夹名称


  public ObservableCollection items = new ObservableCollection();

   尝试
             {
                 string [] folderPaths = Directory.GetDirectories(stemp);
                 items.Clear();
                 foreach(stringPath中的string)
                 {
                     items.Add(new gridItems {foldername = s.Remove(0,s.LastIndexOf('\\')+ 1),folderpath = s});

                 }

             }
            捕获(例外a)
             {

             }
  公共类gridItems
     {
        公共stringfoldername {get; 组;  }
        公共stringfolderpath {get; 组;  }
     }

这是丑陋的,但避免分配:

 private static string GetFolderName(string path) { var end = -1; for (var i = path.Length; --i >= 0;) { var ch = path[i]; if (ch == System.IO.Path.DirectorySeparatorChar || ch == System.IO.Path.AltDirectorySeparatorChar || ch == System.IO.Path.VolumeSeparatorChar) { if (end > 0) { return path.Substring(i + 1, end - i - 1); } end = i; } } if (end > 0) { return path.Substring(0, end); } return path; } 
 // For example: String[] filePaths = Directory.GetFiles(@"C:\Nouveau dossier\Source"); String targetPath = @"C:\Nouveau dossier\Destination"; foreach (String FileD in filePaths) { try { FileInfo info = new FileInfo(FileD); String lastFolderName = Path.GetFileName(Path.GetDirectoryName(FileD)); String NewDesFolder = System.IO.Path.Combine(targetPath, lastFolderName); if (!System.IO.Directory.Exists(NewDesFolder)) { System.IO.Directory.CreateDirectory(NewDesFolder); } String destFile = System.IO.Path.Combine(NewDesFolder, info.Name); File.Move(FileD, destFile ); // Try to move Console.WriteLine("Moved"); // Success } catch (IOException ex) { Console.WriteLine(ex); // Write error } }