問題があった理由:誰かが既に指定したとおり:
byte []で開始し、実際にテキストデータが含まれていない場合、「適切な変換」は行われません。文字列はテキスト用、byte []はバイナリデータ用であり、本当に賢明なことは、本当に必要な場合を除いて、文字列間の変換を回避することです。
PDFファイルからbyte []を作成し、それを文字列に変換してから、文字列を入力として受け取り、ファイルに戻すときに、この問題を観察していました。
したがって、エンコードとデコードのロジックが私と同じであることを確認してください。私は明示的にbyte []をBase64にエンコードし、それをデコードして再度ファイルを作成しました。
ユースケース:
原因はいくつかの制限に私が送信しようとしていたbyte[]
中でrequest(POST)
、次のようにプロセスがありました。
PDFファイル>> Base64.encodeBase64(byte [])>>文字列>>リクエストで送信(POST)>>文字列を受信>> 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();
}
byte[]
バイナリデータとString
テキストにを使用することの何が問題になっていますか?