Java NIO - Archivo

El paquete Java NIO proporciona una API de utilidad más llamada Archivos que se utiliza básicamente para manipular archivos y directorios utilizando sus métodos estáticos que funcionan principalmente en el objeto Path.

Como se mencionó en el tutorial de Path, la interfaz de Path se introduce en el paquete Java NIO durante la versión de Java 7 en el paquete de archivos, por lo que este tutorial es para el mismo paquete de archivos.

Esta clase consta exclusivamente de métodos estáticos que operan en archivos, directorios u otros tipos de archivos. En la mayoría de los casos, los métodos definidos aquí delegarán en el proveedor del sistema de archivos asociado para realizar las operaciones del archivo.

Hay muchos métodos definidos en la clase Archivos que también se pueden leer desde documentos Java. En este tutorial, tratamos de cubrir algunos de los métodos importantes entre todos los métodos de la clase Archivos Java NIO.

Métodos importantes de la clase Archivos.

A continuación se muestran los métodos importantes definidos en la clase Java NIO Files.

  • createFile(Path filePath, FileAttribute attrs) - La clase Archivos proporciona este método para crear archivos utilizando la ruta especificada.

Ejemplo

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();
      }
   }
}

Salida

Created a file at : D:\data\file.txt
  • copy(InputStream in, Path target, CopyOption… options) - Este método se utiliza para copiar todos los bytes del flujo de entrada especificado al archivo de destino especificado y devuelve el número de bytes leídos o escritos como valor largo. LinkOption para este parámetro con los siguientes valores:

    • COPY_ATTRIBUTES - copiar atributos al nuevo archivo, por ejemplo, atributo de hora de última modificación.

    • REPLACE_EXISTING - reemplazar un archivo existente si existe.

    • NOFOLLOW_LINKS - Si un archivo es un enlace simbólico, se copia el enlace en sí, no el destino del enlace.

Ejemplo

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);
      }
   }	
}

Salida

To be or not to be?
  • createDirectories(Path dir, FileAttribute<?>...attrs) - Este método se utiliza para crear directorios utilizando una ruta determinada creando todos los directorios principales que no existen.

  • delete(Path path) - Este método se utiliza para eliminar el archivo de la ruta especificada. Lanza NoSuchFileException si el archivo no existe en la ruta especificada o si el archivo es un directorio y es posible que no esté vacío y no se pueda eliminar.

  • exists(Path path) - Este método se usa para verificar si el archivo existe en la ruta especificada y si el archivo existe, devolverá verdadero o, de lo contrario, devolverá falso.

  • readAllBytes(Path path) - Este método se utiliza para leer todos los bytes del archivo en la ruta dada y devuelve la matriz de bytes que contiene los bytes leídos del archivo.

Ejemplo

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);
      }
   }	
}

Salida

Welcome to file.
  • size(Path path) - Este método se utiliza para obtener el tamaño del archivo en la ruta especificada en bytes.

  • write(Path path, byte[] bytes, OpenOption… options) - Este método se utiliza para escribir bytes en un archivo en la ruta especificada.

Ejemplo

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);
      }
   }
}

Salida

To be or not to be?