将文件转换为字节数组的Java程序
为了说明机器上本地目录中存在的文本文件到字节数组的转换,我们将考虑一个名为“gfg.txt”的随机文件,它存在于本地目录中。让文件里面的内容如下图所示:
Geeks for Geeks.
Note: Keep a check that prior doing anything first create a file on the system repository to deal with our program\writing a program as we will be accessing the same directory through our programs.
方法:
- 使用 FileInputStream 类的 read(byte[]) 方法
- 使用 Files.readAllBytes() 方法
方法一:使用FileInputStream 类的 read(byte[]) 方法
FileInputStream 可用于以字节序列的形式从文件中读取数据。 FileInputStream 用于读取原始字节流,例如图像数据。要读取字符流,请考虑使用 FileReader。 FileInputStream 类的read(byte[]) 方法,它读取文件的长度,然后将此输入流中的数据字节转换为字节数组。
程序:
- 使用文件路径创建文件输入流的实例。
- 创建一个与文件长度相同的字节数组。
- 将该文件内容读入数组
- 打印字节数组
- 关闭文件输入流的实例,因为这是一个很好的做法,以避免在运行时遇到任何异常或错误,并释放内存资源,使我们的程序优化,从而加快执行速度。
例子
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() 方法,该方法从文件中读取所有字节。
程序:
- 取一个文本文件路径
- 通过调用 Files.readAllBytes() 将该文件转换为字节数组。
- 打印字节数组。
例子
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]