6
votes

.NET Modèle de fichier choisit les fichiers indésirables (C #)

J'ai une commande comme ci-dessous. Je trouve si j'utilise un modèle de fichier de *. CSV code> Il ramasse également des éléments avec un .csvx code> extension. Peut-être que c'est un retour à la 8.3 Days de nom de fichier - Tout le monde connaît un moyen qui les retournerait correctement, de préférence sans rouler notre propre?

files = (from file in Directory.EnumerateFiles(sourceFolder, filePattern, SearchOption.TopDirectoryOnly) select file).ToList();


5 commentaires

Ajoutez le FilePattern, juste pour être complet.


Et il n'ya pas de point dans la combinaison de tolist () avec énumérerFiles ()


@HENK "Je trouve si j'utilise un modèle de fichier de *. CSV Il récupère également des éléments avec un .csvx "


La touche 8.3 sonne plausible, car le nom 8.3 correspondant à un *. CSVX correspondrait effectivement au modèle *. CSV motif.


@CodeIgn je préférerais le voir avec le " dans un bloc de code.


4 Réponses :


5
votes

juste une solution de contournement mais pourrait être assez bon:

var files = Directory
             .EnumerateFiles(sourceFolder, filePattern, SearchOption.TopDirectoryOnly)
             .Where(f => f.EndsWith(".csv"))
             .ToList();


1 commentaires

Merci. J'avais cet état de contournement à l'esprit, mais cela rend plus complexe pour que l'utilisateur spécifie un modèle lorsque l'appelait la fonction (c'est-à-dire qu'il est plus codé dur). Acclamations!



3
votes

Vous pouvez essayer quelque chose comme ceci: xxx


1 commentaires

Merci xtian - c'est comme je craignais!



1
votes

Vous pouvez également utiliser la propriété "Extension"

var files = new DirectoryInfo(path).GetFiles("*.csv").Where((info) => info.Extension = ".csv")


1 commentaires

Oui, merci pour ça. N'est toujours pas correctement implémenter l'idée de modèle . , mais il est prévu par le son de celui-ci. à votre santé



1
votes

Ce comportement est par conception:

Parce que cette méthode vérifie les noms de fichiers avec le fichier 8.3 Format de nom et le format de nom de fichier long, un modèle de recherche similaire à " 1 .txt" peut renvoyer des noms de fichiers inattendus. Par exemple, en utilisant un modèle de recherche de " 1 .txt" renvoie "longfilename.txt" parce que le Equivalent 8.3 Format de nom de fichier est "longfi ~ 1.txt".

Vous devrez utiliser l'une des solutions de contournement.

Source: http://msdn.microsoft.com/en-us/ Bibliothèque / WZ42302F.ASPX


1 commentaires

Merci Arnold, très apprécié.