Hé, bienvenue à nouveau. Scott Stanlick, ici. Nous allons jeter un œil à file.io dans ce module. Ces leçons couvriront l'ancienne façon de faire les choses, la nouvelle façon de faire les choses. Nous verrons comment créer et manipuler le stockage temporaire, et nous montrerons comment écrire un outil de recherche de fichiers en utilisant des techniques de recherche en profondeur d'abord. Dans cette première leçon, nous allons comparer Et contraster la façon dont les choses ont toujours été à la façon dont les choses sont maintenant avec IO. Donc, si vous remarquez ici, quelques choses que je veux juste mentionner. IO existe depuis Java 1.0, et ce n'était pas la plus grande bibliothèque IO. Il y avait quelques problèmes. Et ces problèmes ont depuis été résolus. J'utilise quelque chose appelé java.nio, ou le nouvel IO. Depuis Java 7, vous pouvez choisir entre l'un ou l'autre. Dans le NIO, cette nouvelle bibliothèque apporte les mêmes fonctionnalités que nous avions avec java.io, mais avec des améliorations massives. Et il y a aussi un moyen facile de migrer sans effort entre les deux. L'ancien java.io n'est pas recommandé pour les nouveaux développements, mais il n'est pas prévu de le déprécier. Ça ne va nulle part car il est utilisé partout. Nous allons donc jeter un œil à quelques types ici, un appelé java.nio.file.Path, qui fera tout ce que ce fichier a fait, et généralement d'une meilleure façon. Alors sautons juste ici. Alors il était une fois, si on voulait créer un fichier, nous dirions nouveau fichier. Et puis nous pourrions faire demi-tour et supprimer le fichier avec fichier.delete. Et peut-être que ça a marché, peut-être que ça n'a pas marché, mais les commentaires ont été ternes, bien sûr. Il y avait une mauvaise gestion des erreurs, à quelques exceptions près. Le résultat pourrait être qu'il n'existe pas. Vous n'avez pas les autorisations. Il y avait beaucoup de lacunes avec cette API. La nouvelle façon de faire est de dire Path.of Foo.java. Et si vous essayez d'utiliser la méthode delete sur la classe Files et passez-lui ce chemin, et le fichier n'existe pas, tu vas avoir une très belle exception. Comme par exemple, il peut lever une NoSuchFileException s'il n'existe pas. Mais il y a bien d'autres exceptions que ce type peut vous présenter qui vous expliquent très bien pourquoi cela n'a peut-être pas fonctionné. Le support entre le nouvel OI et l'héritage est, comme je l'ai mentionné plus tôt, c'est sans effort. Donc, l'ancien monde était que je voulais créer un nouveau fichier. Vous pouvez lui passer les parties, le dossier /java, le fichier Foo.java. Même chose avec Paths.get. Paths est la nouvelle façon de le faire. Si vous voulez échanger entre l'ancien et le nouveau, le fichier a un toPath, qui est la façon de donner à l'ancien un aspect nouveau. Et le nouveau a un toFile, qui est une façon de donner au nouveau un aspect ancien. Et donc selon votre contexte, vous devrez peut-être utiliser une technique ou l'autre, mais vous les avez tous les deux disponibles à tout moment. Il y avait un moyen d'obtenir des métadonnées à partir d'un fichier. Cela n'a donc pas beaucoup changé. C'est juste un peu différent dans la façon dont vous l'utilisez. Alors on va dire File, c'est l'ancien monde, et nous dirons Chemin, c'est le nouveau monde. Et donc nous avons un fichier et un chemin, et le java.io ressemblait à ceci. Telles étaient les méthodes utilisées pour obtenir des métadonnées sur un fichier. Est-ce dans un répertoire ? Puis-je le lire, l'écrire ? Est-il exécutable, est-il caché ? Toutes ces idées. Et en utilisant la nouvelle API, nous utilisons la classe Files. La classe Files contient de nombreuses méthodes, que nous utilisons lorsque nous passons le chemin vers ces méthodes, et il nous dira essentiellement les mêmes choses. Mais ceux-là, ils sont beaucoup plus robustes dans la manière dont ils ont été conçus. C'est plus récent, et nous avons appris nos leçons. C'est ainsi que nous aurions pu travailler avec un fichier en utilisant java.io, donc un nouveau fichier. Et je vais le mettre ici dans src/test/java/com/acme/io. Je dois avoir un dossier quelque part ici comme ça. Oui, com.acme.io. Je peux demander un nom de fichier canonique. Je peux demander s'il existe ou non. Et puis de même, je peux aussi le convertir au nouveau monde et validez-le à nouveau. Alors c'est parti, Files.exist, file.toPath. Alors maintenant, je prends l'ancien et je le transforme en chemin. Et c'est très similaire. Je crée le même fichier, et je vais demander son chemin absolu et s'il existe ou non. Et de même, je peux convertir du nouveau monde vers un fichier, afin que je puisse le convertir en héritage et refaire la même validation. Dans l'espace java.io, l'héritage, il y avait une méthode appelée listFiles. Si vous vouliez obtenir un répertoire de tous les fichiers d'un répertoire, vous diriez listFiles, et il renverrait un tableau, un type de fichier. Le nouveau monde est un peu différent. Vous dites Files.newDirectoryStream, et nous avons déjà regardé java.util.streams avec les filtres et les cartes et les traductions et toutes ces bonnes choses. Files.newDirectoryStream prend votre chemin vers la source et renvoie un flux de répertoire appelé chemins ici. Et dans ce cas, nous pouvons dire pour chaque élément du flux, nous allons l'imprimer. Donc c'est juste la nouvelle façon de lister les fichiers qui existent dans un répertoire. J'apprécie que vous regardiez.