Comment vérifier si le chemin pointe vers un fichier existant avec Java 7 du nouveau Fichier API?
L'ancien, plus ou moins obsolète java.io.File
API avait une méthode exists
qui retourne true si le File
souligné un existant dans le système de fichiers, mais je ne pouvais pas trouver toute méthode comparable pour java.nio.file.Path
:
scala> import java.nio.file._
import java.nio.file._
scala> val path = Paths.get("/foo")
path: java.nio.file.Path = /foo
scala> path.
asInstanceOf compareTo endsWith getFileName getFileSystem getName getNameCount
getParent getRoot isAbsolute isInstanceOf iterator normalize register
relativize resolve resolveSibling startsWith subpath toAbsolutePath toFile
toRealPath toString toUri
Bien sûr, je pourrais simplement convertir le path
retour à un File
mais je suppose qu'il est une meilleure façon de le faire.
Edit: OK, merci à tout le monde en soulignant Files.exists
. Quelqu'un sait pourquoi il a obtenu plus compliqué (que d'avoir un simple exists
méthode sur Path
)?
Vous devez vous connecter pour publier un commentaire.
Utiliser le
Files
classe:Files.exists(path);
EDIT: pour répondre à votre question, je pense que la raison que la méthode est dans une autre classe, c'est que
Path
est une interface, et ils voulaient fournir une implémentation (même à mettre méthodes de tri dans leCollections
classe au lieu de laList
interface).Ne sont pas directement liés à la question, mais comme par ratchet freak il y a une option varags argument de la méthode, qui détermine la façon dont les liens symboliques sont traitées
Lire la Javadoc de Oracle ici.
Files
et pas potentiellement différents, ce qui aurait été possible si elle a été définie dansPath
?Path
mise en œuvre.Files.isRegularFile(path)
si vous ne souhaitez pas accepter les répertoiresregarder dans la classe utilitaire Fichiers pour le paquet:
Dans le nouveau système de fichiers de l'API puis toutes les opérations de fichiers sont définis par les Fichiers de classe. La plupart de ces opérations sont mises en œuvre en termes de d'autres opérations ou qu'ils délèguent à la appropriée fournisseur de système de fichiers. Le Chemin d'accès de l'interface sur l'autre main est où le chemin opérations sont définies. Un Chemin est juste l'objet qui est utilisé pour localiser un fichier. Si vous souhaitez effectuer des opérations sur un fichier, puis vous appelez les Fichiers appropriés méthode, en spécifiant le Chemin d'accès pour localiser le fichier.
Pas besoin d'ajouter une nouvelle méthode pour cela: utiliser
Path.toFile()
pour récupérer un fichier, puis exécutezexists
sur que.toRealPath()
qui je crois va lancer une IOException si le fichier n'existe pas?