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.
Version imprimable
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:
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
contreCode:
1
2 try(Reader reader = Files.newBufferedReader(path, charset)) { }
Regarde les méthodes walk() et walkFileTree()...Code:
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.
Merci beaucoup pour les précisions.