【问题标题】:C# - How to extract the file name and extension from a path?C# - 如何从路径中提取文件名和扩展名?
【发布时间】:2012-10-11 19:08:58
【问题描述】:

所以,说我有

string path = "C:\\Program Files\\Program\\File.exe";

如何只获得“File.exe”?我在想一些关于拆分的事情(见下文),但我尝试过的不起作用......

这是我的代码。

        List<string> procs = new List<string>(); //Used to check if designated process is already running
        foreach (Process prcs in Process.GetProcesses())
            procs.Add(prcs.ProcessName); //Add each process to the list
        foreach (string l in File.ReadAllLines("MultiStart.txt")) //Get list of processes (full path)
            if (!l.StartsWith("//")) //Check if it's commented out
                if (!procs.Contains(l.Split('\\')[l.Split('\\').Length - 1])) //Check if process is already running
                    Process.Start(l);

我可能只是个菜鸟。 ._.

【问题讨论】:

    标签: c# file path


    【解决方案1】:

    这对我来说可以删除 .extension 之前的任何 .sometext

    //Remove all extensions "any .sometext.extension" from the file name
    var newFileName= Path.GetFileNameWithoutExtension(fileName);
    //Combine the the new file name with its actual extension "last .extension"
    var fileNameWithExtension = newFileName+ "." + fileName.Split('.')[fileName.Split('.').Length - 1];
    

    【讨论】:

      【解决方案2】:

      System.IO 有不同的类来处理文件和目录。在它们之间,最有用的一个是Path,它有很多用于处理文件和文件夹的静态帮助方法:

      Path.GetExtension(yourPath); // returns .exe
      Path.GetFileNameWithoutExtension(yourPath); // returns File
      Path.GetFileName(yourPath); // returns File.exe
      Path.GetDirectoryName(yourPath); // returns C:\Program Files\Program
      

      【讨论】:

      • Path.GetDirectoryName(yourPath) 将获取文件夹路径。
      【解决方案3】:

      通过最后一个字符搜索,您可以获得正确的结果。

      string path = "C:\\Program Files\\Program\\fatih.gurdal.docx";
      string fileName = path.Substring(path.LastIndexOf(((char)92))+ 1);
      int index = fileName.LastIndexOf('.');
      string onyName= fileName.Substring(0, index);
      string fileExtension = fileName.Substring(index + 1);
      Console.WriteLine("Full File Name: "+fileName);
      Console.WriteLine("Full File Ony Name: "+onyName);
      Console.WriteLine("Full File Extension: "+fileExtension);
      

      输出:

      文件全名:fatih.gurdal.docx

      完整文件名称:fatih.gurdal

      完整文件扩展名:docx

      【讨论】:

      • 谢谢,这对我的场景很有帮助,因为文件名是字符串而不是物理文件。
      • .NET Core 的注意事项 - 您应该搜索 DirectorySeparatorChar 和 AltDirectorySeparatorChar 的最后一个位置。对帖子 +1,因为它早于广泛的 .net 核心使用,并且它是“显示代码”的唯一答案。如果您想对其进行硬编码,请使用(char)47,因为这是 Unix 分隔符和 Windows 的 AltDirectorySeparatorChar
      【解决方案4】:

      您正在寻找Path.GetFileName(string)

      【讨论】:

      • 不过,这不是你的问题所说的。
      猜你喜欢
      • 1970-01-01
      • 2011-12-08
      • 2012-10-06
      • 2022-06-23
      • 1970-01-01
      • 2011-03-10
      • 2015-05-03
      • 2011-04-28
      相关资源
      最近更新 更多