2011-08-03 63 views
172

Programa en WPF C#. Tengo, por ejemplo, la siguiente ruta:Obtener el nombre de archivo de una cadena de ruta en C#

C:\Program Files\hello.txt 

y quiero salida "hola" de ella.

La ruta es un extracto de cadena de la base de datos. Actualmente estoy usando el método siguiente (se separó de ruta por '\' luego se dividió de nuevo por un ''):

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

Funciona, pero creo que debería ser más corto y más inteligente solución a eso. ¿Alguna idea?

+0

En mi sistema, 'Path.GetFileName ("C: \\ dev \\ \\ alguna ruta \\ a \\ file.cs")' regresa la misma cadena y no convertirlo a "file.cs" por alguna razón. Si copio/pego mi código en un compilador en línea (como http://rextester.com/), ¿funciona ...? – jbyrd

Respuesta

8

Prueba esto:

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

Esto devolverá "hola" para fileName.

20

tratar

System.IO.Path.GetFileNameWithoutExtension(path); 

demostración

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, ya que esto podría ser útil en el caso en que esto funcione como una copia de seguridad en la que el nombre del archivo contenga caracteres no válidos [<, > etc. en Path.GetInvalidChars()]. – bhuvin

4

Prueba de esto,

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

¿Exactamente como dice la respuesta más votada? – CodeCaster

+0

Usó exactamente los mismos métodos que se mencionaron en la respuesta más votada. – 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> 
Cuestiones relacionadas