2011-08-03 120 views
172

我在WPF C#中編寫程序。我有例如以下路徑:從C中的路徑字符串獲取文件名#

C:\Program Files\hello.txt 

,我想輸出「你好」從它。

該路徑是從數據庫提取的字符串。目前我使用下面的方法(從程分裂的「\」然後由再次分裂「」):

string path = "C:\\Program Files\\hello.txt"; 
string[] pathArr = path.Split('\\'); 
string[] fileArr = pathArr.Last().Split('.'); 
string fileName = fileArr.Last().ToString(); 

它的工作原理,但我認爲應該有更短和更智能的解決了這一點。任何想法?

+0

在我的系統,'Path.GetFileName( 「C:\\ \\ dev的一些\\ \\路徑爲\\ file.cs」)'將返回相同的字符串而不是由於某種原因將其轉換爲「file.cs」。如果我將我的代碼複製/粘貼到在線編譯器(如http://rextester.com/),它可以工作......? – jbyrd

回答

8

試試這個:

string fileName = Path.GetFileNameWithoutExtension(@"C:\Program Files\hello.txt"); 

這將爲fileName返回「hello」。

20

嘗試

System.IO.Path.GetFileNameWithoutExtension(path); 

演示

string fileName = @"C:\mydir\myfile.ext"; 
string path = @"C:\mydir\"; 
string result; 

result = Path.GetFileNameWithoutExtension(fileName); 
Console.WriteLine("GetFileNameWithoutExtension('{0}') returns '{1}'", 
    fileName, result); 

result = Path.GetFileName(path); 
Console.WriteLine("GetFileName('{0}') returns '{1}'", 
    path, result); 

// This code produces output similar to the following: 
// 
// GetFileNameWithoutExtension('C:\mydir\myfile.ext') returns 'myfile' 
// GetFileName('C:\mydir\') returns '' 

https://msdn.microsoft.com/en-gb/library/system.io.path.getfilenamewithoutextension%28v=vs.80%29.aspx

4
string Location = "C:\\Program Files\\hello.txt"; 

string FileName = Location.Substring(Location.LastIndexOf('\\') + 
    1); 
+0

+1,因爲這可能是有用的,其中這起到備份的作用,其中文件名包含無效字符[例如Path.GetInvalidChars()]中的等等。 – bhuvin

4

試試這個,

string [email protected]"C:\mydir\myfile.ext"; 
string Result=Path.GetFileName(FilePath);//With Extension 
string Result=Path.GetFileNameWithoutExtension(FilePath);//Without Extension 
+0

就像最高票數的答案所說的那樣? – CodeCaster

+0

您使用了最高投票答案中提及的完全相同的方法。 – CodeCaster

0
Namespace: using System.IO; 
//use this to get file name dynamically 
string filelocation = Properties.Settings.Default.Filelocation; 
//use this to get file name statically 
//string filelocation = @"D:\FileDirectory\"; 
string[] filesname = Directory.GetFiles(filelocation); //for multiple files 

Your path configuration in App.config file if you are going to get file name dynamically - 

    <userSettings> 
     <ConsoleApplication13.Properties.Settings> 
      <setting name="Filelocation" serializeAs="String"> 
      <value>D:\\DeleteFileTest</value> 
      </setting> 
       </ConsoleApplication13.Properties.Settings> 
     </userSettings>