Привет, ребята, я пытаюсь преобразовать файл PDF в байтовый массив, но он не работает для меня, когда я пытаюсь получить файл из ресурса classPath с помощью classLoader и после этого преобразования он в байтовый массив, он не работает, у меня нет нулевого массива, но длина получаемого массива это не нормально, и когда я пишу этот массив байтов как файл, у меня есть поврежденный файл, и я не могу его открыть.ресурс classPath файл конвертировать в байтовый массив не работает
Последнее, что, когда я пытаюсь получить файл, используя путь, подобный (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;
}
davidxxx думать за ваш ответ, но мой нужно использовать место файла в папке с ресурсом i souldn't использовать путь, как «c: //java//files//test.pdf», я использую его так, чтобы сравнивать результаты –
ваш приветствуется :) Мой ответ должен ответьте на вопрос: «Либо вы переместите файл в путь к классам (если это имеет смысл),« – davidxxx