Récupère le nom du fichier à partir d'un emplacement de fichier en Java
J'ai un String
qui fournit un chemin absolu vers un fichier (y compris le nom du fichier). Je veux juste obtenir le nom du fichier. Quelle est la façon la plus simple de le faire?
Il doit être aussi général que possible car je ne peux pas savoir à l'avance quelle sera l'URL. Je ne peux pas simplement créer un objet URL et utiliser getFile()
- tout cela aurait été idéal si c'était possible - car ce n'est pas nécessairement un préfixe http://
cela pourrait être c:/ ou quelque chose de similaire.
5 réponses
new File(fileName).getName();
Ou
int idx = fileName.replaceAll("\\\\", "/").lastIndexOf("/");
return idx >= 0 ? fileName.substring(idx + 1) : fileName;
Notez que la première solution dépend du système. Il ne prend en compte que le caractère séparateur de chemin du système. Donc, si votre code s'exécute sur un système Unix et reçoit un chemin Windows, cela ne fonctionnera pas. C'est le cas lors du traitement des téléchargements de fichiers envoyés par Internet Explorer.
Apache Commons IO fournit la classe FilenameUtils qui vous donne un ensemble assez riche de fonctions utilitaires pour obtenir facilement les différents composants des noms de fichiers, bien que la classe java.Io.File fournisse les bases.
Depuis Apache Commons IO FileNameUtils
String fileName = FilenameUtils.getName(stringNameWithPath);
Voici 2 façons(les deux sont indépendantes du système D'exploitation.)
En Utilisant Paths
: Depuis 1.7
Path p = Paths.get(<Absolute Path of Linux/Windows system>);
String fileName = p.getFileName().toString();
String directory = p.getParent().toString();
Utilisation de FilenameUtils
dans Apache Commons IO:
String name1 = FilenameUtils.getName("/ab/cd/xyz.txt");
String name2 = FilenameUtils.getName("c:\\ab\\cd\\xyz.txt");