Tại sao lại có vấn đề: Như ai đó đã chỉ định:
Nếu bạn bắt đầu bằng một byte [] và thực tế nó không chứa dữ liệu văn bản, thì không có "chuyển đổi phù hợp". Các chuỗi dành cho văn bản, byte [] dành cho dữ liệu nhị phân và điều thực sự hợp lý duy nhất cần làm là tránh chuyển đổi giữa chúng trừ khi bạn thực sự phải làm.
Tôi đã quan sát vấn đề này khi tôi đang cố gắng tạo byte [] từ tệp pdf và sau đó chuyển đổi nó thành Chuỗi và sau đó lấy Chuỗi làm đầu vào và chuyển đổi trở lại tệp.
Vì vậy, hãy chắc chắn rằng mã hóa và giải mã logic của bạn giống như tôi đã làm. Tôi đã mã hóa rõ ràng byte [] thành Base64 và giải mã nó để tạo lại tệp.
Use-case:
Do một số hạn chế Tôi đã cố gắng để gửi đi byte[]
trong request(POST)
và quá trình này là như sau:
Tệp PDF >> Base64.encodeBase64 (byte []) >> Chuỗi >> Gửi yêu cầu (POST) >> nhận Chuỗi >> Base64.decodeBase64 (byte []) >> tạo nhị phân
Hãy thử cái này và cái này hiệu quả với tôi ..
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[]
dữ liệu nhị phân vàString
văn bản của bạn?