Lors de l'obtention des noms de fichiers dans un certain dossier:
DirectoryInfo di = new DirectoryInfo(currentDirName);
FileInfo[] smFiles = di.GetFiles("*.txt");
foreach (FileInfo fi in smFiles)
{
builder.Append(fi.Name);
builder.Append(", ");
...
}
fi.Name
me donne un nom de fichier avec son extension: file1.txt
, file2.txt
, file3.txt
.
Comment puis-je obtenir les noms de fichiers sans les extensions? ( file1
, file2
, file3
)
builder
sera une instance deStringBuilder
dans le code OP. C'est juste un exemple d'utilisation de GetFileNameWithoutExtension - vous ferez probablement mieux d'écrire votre propre code qui l'appelle.GetFileNameWithoutExtension
ne supprime que l' extension de fin . Par exemple, le nom de fichierexample.es6.js
deviendraexample.es6
Utilisez
Path.GetFileNameWithoutExtension()
.la source
Cette solution empêche également l'ajout d'une virgule de fin.
Je n'aime pas DirectoryInfo, FileInfo pour ce scénario.
DirectoryInfo et FileInfo collectent plus de données sur le dossier et les fichiers que nécessaire, ce qui leur prend plus de temps et de mémoire que nécessaire.
la source
Directory.GetFiles
surDirectoryInfo.GetFiles
anyday, si tout ce que je veux est des noms de fichiers.Utilisez
Path.GetFileNameWithoutExtension
. Le chemin se trouve dans l'espace de noms System.IO.la source
Cela renvoie le nom de fichier uniquement sans le type d'extension. Vous pouvez également le modifier pour obtenir à la fois le nom et le type de fichier
source: https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx
la source
En tant que réponse supplémentaire (ou pour compléter les réponses existantes), vous pouvez écrire une méthode d'extension pour accomplir cela pour vous dans la classe DirectoryInfo. Voici un exemple que j'ai écrit assez rapidement qui pourrait être embelli pour fournir des noms de répertoire ou d'autres critères de modification, etc.:
Edit: Je pense également que cette méthode pourrait probablement être simplifiée ou géniale si elle utilisait LINQ pour réaliser la construction du tableau, mais je n'ai pas l'expérience de LINQ pour le faire assez rapidement pour un échantillon de ce type.
Edit 2 (près de 4 ans plus tard): Voici la méthode LINQ-ified que j'utiliserais:
la source
FileInfo
connaît sa propre extension, vous pouvez donc la supprimerou si vous êtes paranoïaque qu'il pourrait apparaître au milieu, ou que vous souhaitez microoptimiser:
la source
si le nom du fichier contient un répertoire et que vous ne devez pas perdre de répertoire:
la source
essaye ça,
la source
Juste pour info:
De cette façon, vous n'utilisez pas
StringBuilder
maisString.Join()
. Veuillez également noter qu'il aPath.GetFileNameWithoutExtension()
besoin d'un chemin complet (fi.FullName
), pasfi.Name
comme je l'ai vu dans l'une des autres réponses.la source
la source