Почему возникла проблема: Как кто-то уже указал:
Если вы начинаете с байта [], и он на самом деле не содержит текстовых данных, «правильного преобразования» не существует. Строки предназначены для текста, byte [] - для двоичных данных, и единственное, что действительно разумно сделать, - это избегать преобразования между ними, если в этом нет необходимости.
Я наблюдал эту проблему, когда пытался создать байт [] из файла PDF, затем преобразовать его в строку и затем взять строку в качестве входных данных и преобразовать обратно в файл.
Поэтому убедитесь, что ваша логика кодирования и декодирования такая же, как у меня. Я явно закодировал байт [] в Base64 и расшифровал его, чтобы снова создать файл.
Использование регистра:
Из-за некоторых ограничений я пытался отправить byte[]
в request(POST)
, и процесс был следующим:
Файл PDF >> Base64.encodeBase64 (byte []) >> String >> Отправить в запросе (POST) >> String >> Base64.decodeBase64 (byte []) >> создать двоичный файл
Попробуйте это, и это сработало для меня ..
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();
}