大家好我试图将pdf文件转换为字节数组,但是当我尝试使用classLoader从classPath资源获取文件并且之后将其转换为字节数组时它不会对我有效#&# 39;工作我没有一个空数组,但得到的数组长度不好,当我把这个字节数组写成文件时,我有一个损坏的文件,我无法打开它
当我尝试使用类似(c://java//files//test.pdf)这样的路径获取文件时,它的工作和字节数组的长度是正常的,当时我把数组写成一个文件,我在输入中有一些文件。使用classLoader和使用路径获取文件长度的另一件事就是一些 我的代码是:
public static void main(String[] args) {
try {
// convert file to byte[]
byte[] bFile = readBytesFromFile("C:\\TEMP\\test.pdf");
byte[] bytes = readBytesFromFileResources();
System.out.println(bFile.length);//60255
System.out.println(bytes.length);//14463
}
private static byte[] readBytesFromFile(String filePath) {
FileInputStream fileInputStream = null;
byte[] bytesArray = null;
try {
File file = new File(filePath);
bytesArray = new byte[(int) file.length()];
//read file into bytes[]
fileInputStream = new FileInputStream(file);
fileInputStream.read(bytesArray);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return bytesArray;
}
private static byte[] readBytesFromFileResources() {
ClassLoader classLoader = ReadFile.class.getClassLoader();
File file = new File(classLoader.getResource("test.pdf").getFile());
FileInputStream fileInputStream = null;
byte[] bytesArray = null;
try {
bytesArray = new byte[(int) file.length()];
//read file into bytes[]
fileInputStream = new FileInputStream(file);
fileInputStream.read(bytesArray);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fileInputStream != null) {
try {
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return bytesArray;
}
答案 0 :(得分:0)
当我尝试使用类似路径获取文件时的最后一件事 (c://java//files//test.pdf)它的工作和字节数组长度没问题 当我将数组写为文件时,我确实有一些文件 输入
c://java//files//test.pdf
可能不在类路径中
因此,您无法使用类加载器加载文件,因为类加载器将无法找到它。
要么在类路径中移动文件(如果有意义的话),要么在写入问题时以文件系统相关的方式加载文件:
File file = new file("c://java//files//test.pdf)";