Warum war das Problem: Wie bereits jemand angegeben:
Wenn Sie mit einem Byte [] beginnen und es tatsächlich keine Textdaten enthält, gibt es keine "richtige Konvertierung". Zeichenfolgen sind für Text, Byte [] für Binärdaten, und das einzig wirklich Sinnvolle ist, die Konvertierung zwischen ihnen zu vermeiden, es sei denn, Sie müssen dies unbedingt tun.
Ich habe dieses Problem beobachtet, als ich versucht habe, Byte [] aus einer PDF-Datei zu erstellen, es dann in einen String zu konvertieren und dann den String als Eingabe zu nehmen und wieder in eine Datei zu konvertieren.
Stellen Sie also sicher, dass Ihre Kodierungs- und Dekodierungslogik mit meiner identisch ist. Ich habe das Byte [] explizit in Base64 codiert und dekodiert, um die Datei erneut zu erstellen.
Use-Case:
Aufgrund einiger Einschränkung Ich habe versucht , zu abgeschickt byte[]in request(POST)und das Verfahren war wie folgt:
PDF-Datei >> Base64.encodeBase64 (Byte []) >> String >> Anfrage senden (POST) >> String empfangen >> Base64.decodeBase64 (Byte []) >> Binärdatei erstellen
Versuchen Sie dies und das hat bei mir funktioniert ..
File file = new File("filePath");
byte[] byteArray = new byte[(int) file.length()];
try {
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(byteArray);
String byteArrayStr= new String(Base64.encodeBase64(byteArray));
FileOutputStream fos = new FileOutputStream("newFilePath");
fos.write(Base64.decodeBase64(byteArrayStr.getBytes()));
fos.close();
}
catch (FileNotFoundException e) {
System.out.println("File Not Found.");
e.printStackTrace();
}
catch (IOException e1) {
System.out.println("Error Reading The File.");
e1.printStackTrace();
}
byte[]für Ihre Binärdaten undStringfür Ihren Text zu verwenden?