Java NIO - Fichier

Le package Java NIO fournit une API utilitaire supplémentaire nommée Files qui est essentiellement utilisée pour manipuler des fichiers et des répertoires à l'aide de ses méthodes statiques qui fonctionnent principalement sur l'objet Path.

Comme mentionné dans le didacticiel Path, l'interface Path est introduite dans le package Java NIO au cours de la version Java 7 du package de fichiers. Ce didacticiel concerne donc le même package File.

Cette classe se compose exclusivement de méthodes statiques qui opèrent sur des fichiers, des répertoires ou d'autres types de fichiers. Dans la plupart des cas, les méthodes définies ici délégueront au fournisseur de système de fichiers associé le soin d'effectuer les opérations sur les fichiers.

Il existe de nombreuses méthodes définies dans la classe Files qui peuvent également être lues à partir de documents Java.Dans ce didacticiel, nous avons essayé de couvrir certaines des méthodes importantes parmi toutes les méthodes de la classe Java NIO Files.

Méthodes importantes de la classe Files.

Voici les méthodes importantes définies dans la classe Java NIO Files.

  • createFile(Path filePath, FileAttribute attrs) - La classe Files fournit cette méthode pour créer un fichier à l'aide du chemin spécifié.

Exemple

package com.java.nio;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class CreateFile {
   public static void main(String[] args) {
      //initialize Path object
      Path path = Paths.get("D:file.txt");
      //create file
      try {
         Path createdFilePath = Files.createFile(path);
         System.out.println("Created a file at : "+createdFilePath);
      } 
      catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Production

Created a file at : D:\data\file.txt
  • copy(InputStream in, Path target, CopyOption… options) - Cette méthode est utilisée pour copier tous les octets du flux d'entrée spécifié vers le fichier cible spécifié et renvoie le nombre d'octets lus ou écrits sous forme de valeur longue.LinkOption pour ce paramètre avec les valeurs suivantes -

    • COPY_ATTRIBUTES - copier les attributs dans le nouveau fichier, par exemple l'attribut de dernière modification.

    • REPLACE_EXISTING - remplacer un fichier existant s'il existe.

    • NOFOLLOW_LINKS - Si un fichier est un lien symbolique, alors le lien lui-même, et non la cible du lien, est copié.

Exemple

package com.java.nio;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.List;
public class WriteFile {
   public static void main(String[] args) {
      Path sourceFile = Paths.get("D:file.txt");
      Path targetFile = Paths.get("D:fileCopy.txt");
      try {
         Files.copy(sourceFile, targetFile,
         StandardCopyOption.REPLACE_EXISTING);
      }
      catch (IOException ex) {
         System.err.format("I/O Error when copying file");
      }
      Path wiki_path = Paths.get("D:fileCopy.txt");
      Charset charset = Charset.forName("ISO-8859-1");
      try {
         List<String> lines = Files.readAllLines(wiki_path, charset);
         for (String line : lines) {
            System.out.println(line);
         }
      } 
      catch (IOException e) {
         System.out.println(e);
      }
   }	
}

Production

To be or not to be?
  • createDirectories(Path dir, FileAttribute<?>...attrs) - Cette méthode est utilisée pour créer des répertoires en utilisant un chemin donné en créant tous les répertoires parents inexistants.

  • delete(Path path) - Cette méthode est utilisée pour supprimer le fichier du chemin spécifié.Elle lance NoSuchFileException si le fichier n'existe pas au chemin spécifié ou si le fichier est un répertoire et qu'il ne peut pas être vide et ne peut pas être supprimé.

  • exists(Path path) - Cette méthode est utilisée pour vérifier si le fichier existe au chemin spécifié et si le fichier existe, il retournera vrai ou bien il retournera faux.

  • readAllBytes(Path path) - Cette méthode est utilisée pour lire tous les octets du fichier au chemin donné et renvoie le tableau d'octets contenant les octets lus dans le fichier.

Exemple

package com.java.nio;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
public class ReadFile {
   public static void main(String[] args) {
      Path wiki_path = Paths.get("D:file.txt");
      Charset charset = Charset.forName("ISO-8859-1");
      try {
         List<String> lines = Files.readAllLines(wiki_path, charset);
         for (String line : lines) {
            System.out.println(line);
         }
      } 
      catch (IOException e) {
         System.out.println(e);
      }
   }	
}

Production

Welcome to file.
  • size(Path path) - Cette méthode est utilisée pour obtenir la taille du fichier au chemin spécifié en octets.

  • write(Path path, byte[] bytes, OpenOption… options) - Cette méthode est utilisée pour écrire des octets dans un fichier au chemin spécifié.

Exemple

package com.java.nio;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
public class WriteFile {
   public static void main(String[] args) {
      Path path = Paths.get("D:file.txt");
      String question = "To be or not to be?";
      Charset charset = Charset.forName("ISO-8859-1");
      try {
         Files.write(path, question.getBytes());
         List<String> lines = Files.readAllLines(path, charset);
         for (String line : lines) {
            System.out.println(line);
         }
      } 
      catch (IOException e) {
         System.out.println(e);
      }
   }
}

Production

To be or not to be?