【问题标题】:Getting Folder Name(s) from Path从路径获取文件夹名称
【发布时间】:2010-10-12 18:42:15
【问题描述】:

如果我有像“C:\My Documents\Images\Image1.png”这样的文件路径,如何获取“Image1.png”文件的父文件夹名称?在这种情况下,“图像”,但这只是一个示例。我浏览了System.IO.Path,似乎没有任何东西。也许我忽略了它,但我不知道它会在哪里。

【问题讨论】:

    标签: c# .net vb.net


    【解决方案1】:

    像这样:

    Path.GetFileName(Path.GetDirectoryName(something))
    

    【讨论】:

    • 时髦,我不知道你能解决这样的问题。 +1
    • 太好了,这是最直接的。谢谢!
    【解决方案2】:

    使用System.IO.FileInfo。

    string fl = "C:\My Documents\Images\Image1.png";
    System.IO.FileInfo fi = new System.IO.FileInfo(fl);
    string owningDirectory = fi.Directory.Name;
    

    【讨论】:

    • 这个属性返回的是目录的完整路径,这不是他想要的。
    • 感谢您指出这一点 - 已更新。 FileInfo.Directory.Name 将返回所需的结果。
    【解决方案3】:

    创建一个实例

     System.IO.FileInfo f1 = new FileInfo("filepath");
                        DirectoryInfo dir=f1.Directory;
                        string dirName = dir.Name;
                        string fullDirPath = dir.FullName;
    

    【讨论】:

      【解决方案4】:

      试试这个:

      var directoryFullPath = Path.GetDirectoryName(@"C:\My Documents\Images\Image1.png");
      var directoryName = Path.GetFileName(directoryFullPath);  \\ Images
      

      【讨论】:

        【解决方案5】:

        看看这个答案; C# How do I extract each folder name from a path? 然后只查找数组中的最后一个元素。

        【讨论】:

          【解决方案6】:

          下面的方法会提取所有的目录名和文件名

          Dim path As String = "C:\My Documents\Images\Image1.png"
          Dim list As String() = path.Split("\")
          Console.WriteLine(list.ElementAt(list.Count - 2))
          

          【讨论】:

          • 嗯,标题暗示了获取多个文件夹名称的可能性 - 不确定提问者是否想要的不仅仅是一个父目录,为什么不呢?
          • 您还应该在备用路径分隔符上进行拆分(Windows 为 /)
          猜你喜欢
          • 2011-01-25
          • 1970-01-01
          • 2011-04-13
          • 2011-07-10
          • 1970-01-01
          • 2016-12-29
          • 2020-03-16
          • 1970-01-01
          相关资源
          最近更新 更多