2012-10-22 168 views
22

所以,說我有C# - 如何從路徑中提取文件名和擴展名?

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); 

我可能只是一個noob。 ._。

回答

15

您正在尋找Path.GetFileName(string)

+0

我的代碼需要Path.GetFileNameWithoutExtension,但是謝謝... – CrimsonDeath

+5

這不是什麼喲你的問題說,雖然。 – Joey

78

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 
+4

而'Path.GetDirectoryName(yourPath)'將獲取文件夾路徑。 –

2

隨着最後一個字符的搜索就可以得到正確的結果。

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

完整文件ONY名稱:fatih.gurdal

全部文件擴展名:DOCX

相關問題