2012-10-22 16 views
22

だから、私はどのように私は唯一の "FILE.EXE" を得るのですか?- パスからファイル名と拡張子を抽出するには?

string path = "C:\\Program Files\\Program\\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); 

私はたぶんノブです。 ._。

答えて

15

あなたはPath.GetFileName(string)を探しています。

+0

のdocx私のコードにはPath.GetFileNameWithoutExtensionが必要でしたが、おかげさまで... – CrimsonDeath

+5

これは何もないしかし、ウルの質問によると、 – Joey

78

System.IOには、ファイルとディレクトリで動作するさまざまなクラスがあります。それらの間で、最も有用な1の1のファイルとフォルダを操作するための静的ヘルパーメソッドの多くを持っている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

完全なファイル拡張子:

関連する問題