Al obtener nombres de archivo en una determinada carpeta:
DirectoryInfo di = new DirectoryInfo(currentDirName); FileInfo[] smFiles = di.GetFiles("*.txt"); foreach (FileInfo fi in smFiles) { builder.Append(fi.Name); builder.Append(", "); ... } fi.Name me da un nombre de archivo con su extensión: file1.txt , file2.txt , file3.txt .
¿Cómo puedo obtener los nombres de los archivos sin las extensiones? ( file1 , file2 , file3 )
Puede usar Path.GetFileNameWithoutExtension :
foreach (FileInfo fi in smFiles) { builder.Append(Path.GetFileNameWithoutExtension(fi.Name)); builder.Append(", "); } Aunque me sorprende que no haya una forma de obtener esto directamente desde FileInfo (o al menos no puedo verlo).
Utilice Path.GetFileNameWithoutExtension() .
Esta solución también evita la adición de una coma final.
var filenames = String.Join( ", ", Directory.GetFiles(@"c:\", "*.txt") .Select(filename => Path.GetFileNameWithoutExtension(filename)));No me gusta DirectoryInfo, FileInfo para este escenario.
DirectoryInfo y FileInfo recopilan más datos sobre la carpeta y los archivos de los necesarios, por lo que requieren más tiempo y memoria de lo necesario.