Por que o problema: Como alguém já especificou:
Se você inicia com um byte [] e, de fato, não contém dados de texto, não há "conversão adequada". Strings são para texto, byte [] é para dados binários, e a única coisa realmente sensata a fazer é evitar a conversão entre eles, a menos que você precise.
Eu estava observando esse problema quando tentava criar o byte [] a partir de um arquivo pdf, convertendo-o em String e, em seguida, pegando o String como entrada e convertendo-o novamente em arquivo.
Portanto, verifique se a lógica de codificação e decodificação é a mesma que eu fiz. Eu codifiquei explicitamente o byte [] para Base64 e decodifiquei para criar o arquivo novamente.
Use-case:
Devido a algumas limitações que eu estava tentando enviado byte[]
no request(POST)
e o processo foi o seguinte:
Arquivo PDF >> Base64.encodeBase64 (byte []) >> String >> Solicitação de envio (POST) >> receive String >> Base64.decodeBase64 (byte []) >> create binary
Tente isso e isso funcionou para mim ..
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 seus dados binários eString
seu texto?