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.