问题出在哪里:正如已经有人指出的那样:
如果您以byte []开头并且实际上不包含文本数据,则没有“正确转换”。字符串用于文本,byte []用于二进制数据,唯一真正明智的做法是避免在它们之间进行转换,除非绝对必要。
当我尝试从pdf文件创建byte [],然后将其转换为String,然后将String作为输入并转换回文件时,我正在观察此问题。
因此,请确保您的编码和解码逻辑与我相同。我将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
文本有什么问题?