Bonjour à tous,
Ma question est de savoir pourquoi depuis java 7 on préfère représenter un chemin par la classe Path à la place de File.
Merci d'avance.
Bonjour à tous,
Ma question est de savoir pourquoi depuis java 7 on préfère représenter un chemin par la classe Path à la place de File.
Merci d'avance.
Path permet de s'isoler du FileSystem. On peux y utiliser aussi bien des fichier "physique" (filesystem de l'autre) que tout autre filesystem virtuel pourvu d'avoir un provider. Example un filesystem réseau, un filesystem en mémoire, un filesystem représentant le classepath, etc.
De plus ces classes fournissent beaucoup plus de méthodes (watch service, liens symboliques, résolution relative, ouverture, convertion en stream)
Salut,
- C'est plus pratique à parcourir quand on veut traiter chaque niveau :
je te laisse réfléchir pour écrire le même genre de parcours avec File...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Path path = ... for(Path subPath : path) { /*...*/ }- Path gère les liens symboliques, jonctions, etc
- On peut utiliser Path avec les classes de nio, qui sont souvent plus pratique
contre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 try(Reader reader = Files.newBufferedReader(path, charset)) { }
Regarde les méthodes walk() et walkFileTree()...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 try(Reader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file),charset))) { }- L'usage est plus pratique en particulier pour les options (remplacer ou écrire à la fin, créer seulement si n'existe pas, suivre un lien symbolique, etc). Regarde par exemple la classe OpenOption et ses sous-classes.
- Il y a également les DirectoryStream qui sont très pratiques.
- Les méthodes de suppression, déplacement soulèvent des exceptions au lieu de retourner un booléen
- La gestion des attributs (FileAttribute)...
- La possibilité de tester si un chemin est valide (s'il n'y a pas de caractères interdits)...
- etc.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Merci beaucoup pour les précisions.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager