Mengapa masalahnya: Seperti seseorang telah ditentukan:
Jika Anda mulai dengan byte [] dan itu sebenarnya tidak berisi data teks, tidak ada "konversi yang tepat". String adalah untuk teks, byte [] adalah untuk data biner, dan satu-satunya hal yang benar-benar masuk akal untuk dilakukan adalah menghindari konversi di antara mereka kecuali Anda benar-benar harus melakukannya.
Saya mengamati masalah ini ketika saya mencoba membuat byte [] dari file pdf dan kemudian mengubahnya menjadi String dan kemudian mengambil String sebagai input dan mengkonversi kembali ke file.
Jadi pastikan logika encoding dan decoding Anda sama dengan yang saya lakukan. Saya secara eksplisit menyandikan byte [] ke Base64 dan mendekodekannya untuk membuat file lagi.
Gunakan-kasus:
Karena beberapa keterbatasan saya mencoba untuk pengirimannya byte[]di request(POST)dan proses adalah sebagai berikut:
File PDF >> Base64.encodeBase64 (byte []) >> String >> Kirim dalam permintaan (POST) >> menerima String >> Base64.decodeBase64 (byte []) >> buat biner
Coba ini dan ini berhasil untuk saya ..
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[]untuk data biner Anda danStringuntuk teks Anda?