Comment obtenir le fichier du répertoire avec motif/filtre
- Je obtenir un fichier à partir d'un PDF fichiers du répertoire. J'ai un problème que je n'ai pas un champ de concant toutes les données pour trouver le fichier.
Voici un exemple:
Nom de fichier:
Comp_20120619_170310_2_632128_FC_A_8_23903.pdf
Nom de fichier générer:
Comp_20120619_--------_2_632128_FC_A_8_23903.pdf
Je n'ai pas " avoir le champ "--------"
de faire fichier nom COMPLET.
Je suis en train d'essayer avec File.list
mais je ne trouve pas le bon fichier.
Je ne connais pas beaucoup de java, mais que dire de "Comp_20120619_*_2_632128_FC_A_8_23903.pdf"?
J'ai pensé, mais ça ne fonctionne pas. Merci!
J'ai pensé, mais ça ne fonctionne pas. Merci!
OriginalL'auteur backLF | 2012-11-22
Vous devez vous connecter pour publier un commentaire.
Vous pouvez définir un FilenameFilter de faire correspondre les noms des fichiers, et retourne true si le nom de fichier correspond à ce que vous recherchez.
La
listFiles()
méthode renvoie un tableau d'objets File. Cela est logique, car il pourrait y avoir plus d'un fichier qui correspond au modèle (au moins en théorie, mais pas nécessairement dans votre système).J'ai utilisé une expression régulière correspondant au nom de fichier, à l'aide de
[^_]*
pour correspondre à la section que vous n'êtes pas sûr à ce sujet. Toutefois, vous pouvez utiliser n'importe quelle fonction qui retourne un booléen si le nom de fichier correspond. Par exemple, vous pouvez utiliserstartsWith
etendsWith
au lieu d'une expression régulière.Rappelez-vous que c'est une regex et pas un fichier glob. Donc, si vous voulez faire correspondre n'importe quel texte, c'est ".*" et pas de "*". N'oubliez pas d'ajouter le souligne à votre regex trop!
Aussi vous avez besoin d'échapper les points, comme un point dans la RegEx signifie "n'importe quel caractère". Il devrait donc être "Comp_20120619_[^_]*_2_632128_FC_A_8_23903\\.pdf". (Deux barres obliques inverses sont nécessaires, comme vous l'avez également besoin d'adhérer à la java s'échapper règles: deux backslahes dans le sens littéral signifie dans la chaîne de caractères)
Comment passer de l'expression rationnelle de l'extérieur de l'accepter méthode?
OriginalL'auteur Martin Ellis
Quel est votre problème avec
list()
?OriginalL'auteur jlordo
Il est possible tu utiliser un WildcardFileFilter (org.apache.commons.io.filefilter)
Le code est simple :
OriginalL'auteur Julien Feniou
Espère que ça fonctionne..
listFiles avec filtre de nom de fichier vous donnera uniquement les fichiers qui correspond à vos critères de filtrage. Ici, je vais chercher uniquement les fichiers dont le nom commence par critères mentionnés (passé en paramètre à la méthode getFileNameFilterMachingWithFilename("Comp_20120619_")) et se termine avec ".pdf" extension, juste pour ramasser uniquement les pdf. aussi c'est par rapport à la casse manière de sélectionner tous les fichiers, même sur linux comme OS avec la casse du système de fichiers.
pouvez-vous mettre votre commentaire dans la réponse elle-même?
OriginalL'auteur Amritesh Sharma