📌  相关文章
📜  将文件转换为字节数组的Java程序

📅  最后修改于: 2022-05-13 01:54:45.940000             🧑  作者: Mango

将文件转换为字节数组的Java程序

为了说明机器上本地目录中存在的文本文件到字节数组的转换,我们将考虑一个名为“gfg.txt”的随机文件,它存在于本地目录中。让文件里面的内容如下图所示:

Geeks for Geeks.

方法:

  1. 使用 FileInputStream 类的 read(byte[]) 方法
  2. 使用 Files.readAllBytes() 方法 

方法一:使用FileInputStream 类的 read(byte[]) 方法

FileInputStream 可用于以字节序列的形式从文件中读取数据。 FileInputStream 用于读取原始字节流,例如图像数据。要读取字符流,请考虑使用 FileReader。 FileInputStream 类的read(byte[]) 方法,它读取文件的长度,然后将此输入流中的数据字节转换为字节数组。



程序:

  1. 使用文件路径创建文件输入流的实例。
  2. 创建一个与文件长度相同的字节数组。
  3. 将该文件内容读入数组
  4. 打印字节数组
  5. 关闭文件输入流的实例,因为这是一个很好的做法,以避免在运行时遇到任何异常或错误,并释放内存资源,使我们的程序优化,从而加快执行速度。

例子

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("C:\\Users\\HP\\Desktop\\gfg.txt");
 
        // 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));
    }
}


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("C:\\Users\\HP\\Desktop\\gfg.txt");
 
        // Now convert  file into a byte array
        // using Files.readAllBytes() method
        byte[] arr = Files.readAllBytes(path);
 
        // Lastly print the above byte array
        System.out.println(Arrays.toString(arr));
    }
}



输出:

[71, 101, 101, 107, 115, 32, 102, 111, 114, 32, 71, 101, 101, 107, 115, 46, 10]

现在让我们讨论实现相同目标的另一种方法。

方法 2:使用Files.readAllBytes() 方法

Java.nio.file.Files 类具有预定义的 readAllBytes() 方法,该方法从文件中读取所有字节。

程序:

  1. 取一个文本文件路径
  2. 通过调用 Files.readAllBytes() 将该文件转换为字节数组。
  3. 打印字节数组。

例子

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("C:\\Users\\HP\\Desktop\\gfg.txt");
 
        // Now convert  file into a byte array
        // using Files.readAllBytes() method
        byte[] arr = Files.readAllBytes(path);
 
        // Lastly print the above byte array
        System.out.println(Arrays.toString(arr));
    }
}

输出:

[71, 101, 101, 107, 115, 32, 102, 111, 114, 32, 71, 101, 101, 107, 115, 46, 10]