Aquí, veremos las diferentes formas de convertir un archivo a una array de bytes en Java.
Nota: mantenga un control antes de hacer algo primero. Cree un archivo en el repositorio del sistema para tratar con nuestro programa\escribiendo un programa ya que accederemos al mismo directorio a través de nuestros programas.
Métodos:
- Usando el método de lectura (byte []) de la clase FileInputStream
- Usando el método Files.readAllBytes()
Método 1: usar el método de lectura (byte []) de la clase FileInputStream
FileInputStream es útil para leer datos de un archivo en forma de secuencia de bytes. FileInputStream está diseñado para leer flujos de bytes sin procesar, como datos de imágenes. Para leer secuencias de caracteres, considere usar FileReader . método read(byte[]) de la clase FileInputStream que lee hasta la longitud del archivo y luego convierte los bytes de datos de este flujo de entrada en la array de bytes.
Procedimiento:
- Cree una instancia de File Input Stream con la ruta del archivo.
- Cree una array de bytes de la misma longitud que el archivo.
- Lea el contenido de ese archivo en una array.
- Imprime la array de bytes.
- Cierre la instancia del flujo de entrada del archivo, ya que es una buena práctica para evitar que se enfrente cualquier excepción o error durante el tiempo de ejecución y para liberar los recursos de memoria, lo que optimiza nuestro programa y conduce a una ejecución más rápida.
Implementación: para ilustrar la conversión de un archivo de texto presente en el directorio local en una máquina a la array de bytes, consideraremos un archivo aleatorio llamado ‘demo.rtf’ que está presente en el directorio local.
Ejemplo:
Java
// Java Program to Convert File to a Byte Array // Using read(byte[]) Method // Importing required classes import java.io.*; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Arrays; // Main class public class GFG { // Method 1 // To convert file to byte array public static byte[] method(File file) throws IOException { // Creating an object of FileInputStream to // read from a file FileInputStream fl = new FileInputStream(file); // Now creating byte array of same length as file byte[] arr = new byte[(int)file.length()]; // Reading file content to byte array // using standard read() method fl.read(arr); // lastly closing an instance of file input stream // to avoid memory leakage fl.close(); // Returning above byte array return arr; } // Method 2 // Main driver method public static void main(String[] args) throws IOException { // Creating an object of File class and // providing local directory path of a file File path = new File( "/Users/mayanksolanki/Desktop/demo.rtf"); // Calling the Method1 in main() to // convert file to byte array byte[] array = method(path); // Printing the byte array System.out.print(Arrays.toString(array)); } }
Producción:
Método 2: Usar el método readAllBytes() de la clase Files
La clase java.nio.file.Files tiene un método readAllBytes() predefinido que lee todos los bytes de un archivo.
Procedimiento:
- Tomar una ruta de archivo de texto
- Convierta ese archivo en una array de bytes llamando a Files.readAllBytes().
- Imprime la array de bytes.
Ejemplo:
Java
// Java Program to Convert File to a Byte Array // Using Files.readAllBytes() Method // Importing required classes import java.io.*; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Arrays; // Main class public class GFG { // Main driver method public static void main(String[] args) throws IOException { // Creating an object of Path class and // assigning local directory path of file to it Path path = Paths.get( "/Users/mayanksolanki/Desktop/demo.rtf"); // Converting the file into a byte array // using Files.readAllBytes() method byte[] arr = Files.readAllBytes(path); // Printing the above byte array System.out.println(Arrays.toString(arr)); } }
Producción:
Publicación traducida automáticamente
Artículo escrito por manastole01 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA