¿Por qué fue el problema? Como alguien ya especificó:
si comienza con un byte [] y, de hecho, no contiene datos de texto, no hay una "conversión adecuada". Las cadenas son para texto, el byte [] es para datos binarios, y lo único realmente sensato es evitar la conversión entre ellas a menos que sea absolutamente necesario.
Estaba observando este problema cuando intentaba crear un byte [] a partir de un archivo pdf y luego convertirlo a String y luego tomar el String como entrada y volver a convertirlo en archivo.
Así que asegúrese de que su lógica de codificación y decodificación sea la misma que yo. Codifiqué explícitamente el byte [] a Base64 y lo decodifiqué para crear el archivo nuevamente.
De casos de uso:
Debido a algunas limitaciones que intentaba enviado byte[]
en request(POST)
y el proceso fue el siguiente:
Archivo PDF >> Base64.encodeBase64 (byte []) >> String >> Enviar solicitud (POST) >> recibir String >> Base64.decodeBase64 (byte []) >> crear binario
Prueba esto y esto funcionó para mí ...
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[]
para sus datos binarios yString
para su texto?