Ce que j'ai fait jusqu'à présent est le suivant:
String fileName = "file.date.txt";
String ext = fileName.substring(fileName.lastIndexOf('.') + 1);
System.out.printf("'%s'%n", ext); // prints: 'txt'
Existe-t-il un moyen plus pratique dans Java 8?
Non, voir le changelog de la version JDK8
Non, il n'y a pas de moyen plus efficace/pratique dans JDK, mais de nombreuses bibliothèques vous proposent des méthodes prêtes à cet effet, comme Guava: Files.getFileExtension(fileName)
qui encapsule votre code dans une seule méthode (avec validation supplémentaire ).
Pas Java8, mais vous pouvez toujours utiliser FilenameUtils.getExtension()
de la bibliothèque Apache Commons. :)
En fait, il y a une nouvelle façon de penser au retour des extensions de fichier dans Java 8.
La plupart des "anciennes" méthodes décrites dans les autres réponses renvoient une chaîne vide s'il n'y a pas d'extension, mais bien que cela évite NullPointerExceptions, il est facile d'oublier que tous les fichiers n'ont pas d'extension. En renvoyant un Facultatif , vous pouvez vous rappeler à vous et aux autres ce fait, et vous pouvez également faire une distinction entre les noms de fichiers avec une extension vide (point à la fin) et les fichiers sans extension (pas de point dans le nom du fichier)
public static Optional<String> findExtension(String fileName) {
int lastIndex = fileName.lastIndexOf('.');
if (lastIndex == -1) {
return Optional.empty();
}
return Optional.of(fileName.substring(lastIndex + 1));
}
Utilisation FilenameUtils.getExtension
de Apache Commons IO
Exemple:
Vous pouvez fournir nom de chemin complet ou niquement le nom de fichier.
String myString1 = FilenameUtils.getExtension("helloworld.exe"); // returns "exe"
String myString2 = FilenameUtils.getExtension("/home/abc/yey.xls"); // returns "xls"
J'espère que cela t'aides ..