Hallo Leute, ich versuche, eine PDF-Datei in Byte-Array zu konvertieren, aber es funktioniert nicht für mich, wenn ich versuche, die Datei von der ClassPath-Ressource mit dem ClassLoader und danach zu erhalten es zu Byte-Array funktioniert nicht Ich habe kein Null-Array, aber die Array-Länge ist es nicht in Ordnung, und wenn ich dieses Byte-Array als eine Datei schreibe ich habe eine beschädigte Datei und ich kann es nicht öffnen.ressource classPath-Datei in Byte-Array konvertieren funktioniert nicht
Eine letzte Sache, wenn ich versuche, die Datei mit dem Pfad wie (c: //java//files//test.pdf) zu bekommen es funktioniert und Byte-Array-Länge ist es in Ordnung und wenn ich das Array als eine Datei schreiben Ich habe genau die einige Datei in Eingabe. eine andere Sache, die immer Dateilänge und mit classloader Pfad ist genau das einige Mein Code ist:
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 dachte, dass für Ihre Antwort, aber meine Es ist notwendig, den Dateiplatz im Ressourcenordner zu verwenden. Ich sollte keinen Pfad wie "c: //java//files//test.pdf" verwenden. Ich verwende es so, um die Ergebnisse zu vergleichen. –
Ihr seid willkommen :) Meine Antwort sollte Beantworte die Frage: "Entweder du verschiebst die Datei im Klassenpfad (wenn es Sinn macht)," – davidxxx