1. Files
classe
Pour travailler avec des fichiers, il existe une classe utilitaire astucieuse — java.nio.file.Files
. Il a des méthodes pour chaque occasion. Toutes les méthodes de cette classe sont statiques et fonctionnent sur l'objet Path. Il existe de nombreuses méthodes, nous ne considérerons donc que les plus importantes:
Méthode | Description |
---|---|
|
Crée un nouveau fichier dont le chemin estpath |
|
Crée un nouveau répertoire |
|
Crée plusieurs répertoires |
|
Crée un fichier temporaire |
|
Crée un répertoire temporaire |
|
Supprime un fichier ou un répertoire s'il est vide |
|
Copie un fichier |
|
Déplace un fichier |
|
Vérifie si le chemin est un répertoire et non un fichier |
|
Vérifie si le chemin est un fichier et non un répertoire |
|
Vérifie si un objet existe au chemin donné |
|
Renvoie la taille du fichier |
|
Renvoie tout le contenu d'un fichier sous la forme d'un tableau d'octets |
|
Renvoie tout le contenu d'un fichier sous forme de chaîne |
|
Renvoie tout le contenu d'un fichier sous la forme d'une liste de chaînes |
|
Écrit un tableau d'octets dans un fichier |
|
Écrit une chaîne dans un fichier |
|
Renvoie une collection de fichiers (et sous-répertoires) du répertoire donné |
2. Création de fichiers et de répertoires
Les fichiers et les répertoires sont très faciles à créer. Convainquons-nous par quelques exemples :
Code | Note |
---|---|
|
Crée un fichier |
|
Crée un répertoire |
|
Crée un répertoire et tous les sous-répertoires nécessaires s'ils n'existent pas. |
3. Copier, déplacer et supprimer
Copier, déplacer et supprimer des fichiers est tout aussi simple. Ceci s'applique également aux répertoires, mais ils doivent être vides.
Code | Note |
---|---|
|
Copie un fichier |
|
Déplace et renomme un fichier |
|
Supprime un fichier |
4. Vérifier le type et l'existence d'un fichier
Lorsque vous avez un chemin fourni par quelqu'un d'autre, vous voulez savoir s'il s'agit d'un fichier ou d'un répertoire. Et en général, un tel fichier/répertoire existe-t-il ou non ?
Il existe également des méthodes spéciales pour cela. Vous pouvez aussi facilement connaître la longueur d'un fichier :
Code | Note |
---|---|
|
|
|
|
|
|
|
|
5. Travailler avec le contenu des fichiers
Enfin, il existe toute une série de méthodes qui facilitent la lecture ou l'écriture du contenu d'un fichier. Exemple:
Code | Description |
---|---|
|
Lit le contenu du fichier sous la forme d'une liste de chaînes. Afficher les chaînes |
6. Obtenir le contenu d'un répertoire
La méthode la plus intéressante demeure. Il est utilisé pour obtenir des fichiers et des sous-répertoires dans un répertoire donné.
Nous parlons de la newDirectoryStream()
méthode, qui renvoie un DirectoryStream<Path>
objet spécial. Il a un itérateur (!) que vous pouvez utiliser pour obtenir tous les fichiers et sous-répertoires d'un répertoire donné.
C'est plus facile qu'il n'y paraît.
Code | Description |
---|---|
|
Obtenir un objet avec une liste de fichiers Boucle sur la liste de fichiers |
L' DirectoryStream<Path>
objet a deux propriétés. Tout d'abord, il a un itérateur qui renvoie les chemins de fichiers, et nous pouvons utiliser cet objet dans une for-each
boucle.
Et deuxièmement, cet objet est un flux de données, il doit donc être explicitement fermé à l'aide de la close()
méthode ou déclaré à l'intérieur d'un try-with-resources
bloc.
7. Files.newInputStream
méthode
Depuis Java 5, les classes FileInputStream
et FileOutputStream
sont obsolètes. L'un de leurs inconvénients était que lorsque des objets de ces classes sont créés, les fichiers sont immédiatement créés sur le disque. Et toutes les exceptions liées à la création de fichiers pourraient potentiellement être levées.
Plus tard, cela a été reconnu comme n'étant pas la meilleure décision. En conséquence, il est recommandé d'utiliser les méthodes de la java.nio.Files
classe utilitaire pour créer des objets fichier.
Voici une comparaison entre l'ancienne approche et la nouvelle approche de création de fichiers :
Avant |
---|
|
Après |
|
Et il y a un remplacement similaire pour FileOutputStream
:
Avant |
---|
|
Après |
|
GO TO FULL VERSION