2011-08-03 11 views
172

WPF C# içinde program yapıyorum. Ör. Aşağıdaki Yol:Dosya yolunu C yolundaki bir dizgeden alın C#

C:\Program Files\hello.txt 

ve ben çıkışa istiyorum "merhaba" ondan.

Yol, veritabanından bir dize ayıklamasıdır. O inşaat

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

ama bunu daha kısa ve daha akıllı bir çözüm olması gerektiğine inanıyoruz: Şu anda ('' Daha sonra tekrar bölünmüş '\' ile yolundan bölünmüş) aşağıdaki yöntemi kullanıyorum. Herhangi bir fikir?

+0

bu deneyin' aynı dizeyi dönüyor ve herhangi bir nedenden dolayı "file.cs" 'e dönüştürmüyor. Kodumu bir çevrimiçi derleyiciye (http://rextester.com/ gibi) kopyalayıp/yapıştırırsam, çalışır ...? – jbyrd

cevap

19

Sen aşağıdaki gibi Path API kullanabilirsiniz

Bu, dosyaAdı için "merhaba" döndürecektir.

8

bu deneyin deneyin:

20

deneyin

System.IO.Path.GetFileNameWithoutExtension(path); 

demo

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, bu durum, Dosya adının Path.GetInvalidChars() öğesinde geçersiz karakterler [<, > vb.] Içerdiği bir Yedekleme olarak çalıştığı durumlarda yararlı olabilir. – bhuvin

4

("C: \\ file.cs \\ bazı \\ yolunu \\ \\ dev") `Benim sistemde, Path.GetFileName

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

Tam olarak en yüksek oylanan cevap diyor ki? – CodeCaster

+0

En yüksek oylanan cevapta belirtilen yöntemlerin aynısını kullandınız. – 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>