【问题标题】:Get the folder of a file.获取文件所在的文件夹。
【发布时间】:2015-11-20 19:15:41
【问题描述】:

我有一个充满图像的文件夹,并将图像名称和完整文件路径存储在我的程序的数组中。是否可以从文件路径中获取文件夹和文件名。

所以如果我有一个文件路径

C:\Users\Ryan\Documents\myImage.jpg

我需要得到

Documents\myImage.jpg

【问题讨论】:

    标签: c#


    【解决方案1】:

    使用此代码:

    FileInfo f = new FileInfo(@"C:\Users\Ryan\Documents\myImage.jpg");
    string result = Path.Combine(f.Directory.Name, f.Name);
    

    【讨论】:

    • @farhan tnx 在我看到你修复它时已经删除了我的评论。不想和 cmets 混在一起^^
    • @TimSchmelter 实际上,你需要使用Path.Combine,因为如果你在根目录下,例如C:\file.txt 然后Directory.Name 返回C:\
    • @TimSchmelter 但它不会也有助于其他人发现第二种方法会产生错误的路径吗?
    • @Anyways,我删除了它。
    【解决方案2】:

    Path 类具有处理文件名的方法:

    var path = @"C:\Users\Ryan\Documents\myImage.jpg";
    var fileName = Path.GetFileName(path);
    var directoryName = Path.GetDirectoryName(path);
    var lastDirectoryName = Path.GetFileName(directoryName);
    var result = Path.Combine(lastDirectoryName, fileName);
    

    【讨论】:

    • 同样有效,但Path.GetFileName 用于目录的可读性不如FileInfo.Directory.Name 方法。 +1
    【解决方案3】:
    var pathParts = filepath.split('\\');
    var lastPath = pathParts[pathParts - 2] + @"\" + pathParts[pathParts - 1];
    

    【讨论】:

      【解决方案4】:

      这只是在玩字符串,但它可以完成工作

          string path = "C:\Users\Ryan\Documents\myImage.jpg";
          string[] temp = path.Split('\');
          string folder = temp[temp.Length - 2] + @"\" + temp[temp.Length - 1];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-30
        • 2010-12-18
        • 2017-04-17
        • 1970-01-01
        • 2023-03-31
        • 2018-04-02
        相关资源
        最近更新 更多