Comment vérifier l'extension de Java 7 Chemin
J'aimerais vérifier si une Chemin (introduit dans Java 7) se termine par une certaine extension. J'ai essayé le endsWith()
méthode comme suit:
Path path = Paths.get("foo/bar.java")
if (path.endsWith(".java")){
//Do stuff
}
Toutefois, cela ne semble pas fonctionner, car path.endsWith(".java")
renvoie la valeur false. Il semble que le endsWith()
méthode ne renvoie vrai s'il existe une correspondance complète pour tout ce qui est après le dernier séparateur de répertoire (par exemple,bar.java
), ce qui n'est pas pratique pour moi.
Alors, comment puis-je vérifier l'extension du fichier d'un Chemin d'accès?
- stackoverflow.com/questions/3571223/...
- la question est de trouver l'extension d'un
String
, pas unPath
(bien qu'il continuerait de travailler avecPath.toString()
, mais j'espérais une manière qui ne nécessite pas que). - La notion d'extension de fichier est l'os dépendante donc je ne pense pas qu'il y est le support de Fichier ou de Chemin d'accès.
Vous devez vous connecter pour publier un commentaire.
Java NIO est PathMatcher fournit Système de fichiers.getPathMatcher(String syntaxAndPattern):
Voir le Recherche De Fichiers tutoriel pour plus de détails.
PathMatcher matcher = FileSystems.getDefault().getPathMatcher("glob:*.java");
glob:*.java
, puisfilename
ne doit pas contenir n'importe quel parent-chemin. Si j'utilise un rel/abs chemin commeglob:c:/users/muchwow/*.java
, il fonctionne (notez que \\\\ doit être utilisé avec des barres obliques inverses). Le modèleglob:**.java
juste de recherches pour le tout avec de l' *.java, quel que soit le chemin d'accès parent.La
Path
classe n'a pas de notion de "vulgarisation", probablement parce que le système de fichiers lui-même ne l'a pas. C'est pourquoi vous avez besoin de vérifier sonString
de représentation et de voir si elle se termine avec l'quatrecinq chaîne de caractères.java
. Notez que vous avez besoin d'un autre comparaison que de simplesendsWith
si vous souhaitez couvrir mixte, comme dans le cas".JAVA"
et".Java"
:Solution Simple:
Vous devez être prudent, lors de l'utilisation de la Voie.endsWith méthode. Comme vous l'avez indiqué, la méthode retournera vrai seulement si elle correspond à un sous-élément de votre Chemin d'accès de l'objet.
Par exemple:
Il n'y a aucun moyen de le faire directement sur le Chemin de l'objet lui-même.
Il y a deux options que je peux voir: