0
這是一個非常奇怪的問題(至少對我來說),但我發現一些奇怪的Java編碼行爲。 例如,您有一些字節集。然後你將這些字節解釋爲某種編碼中的字符串。比你得到這個字符串的字節並將它保存到另一個文件。 我認爲編碼只是將字節解釋爲字符串的指定方式。但是這樣兩個文件中的字節必須是相同的,但是它們沒有。字節在不同的編碼
這是示例代碼實例:
FileInputStream inputStream = new FileInputStream(new File("firstFile"));
byte[] arr = new byte[50000];
int l = inputStream.read(arr,0,50000);
arr = Arrays.copyOfRange(arr,0, l);
BASE64Encoder encoder = new BASE64Encoder();
String st = encoder.encode(arr);
FileOutputStream outputStream = new FileOutputStream(new File("secondFile"));
outputStream.write(st.getBytes(), 0, st.getBytes().length);
inputStream.close();
outputStream.close();
有兩種編碼1)你的file.encoding系統屬性2)基於平臺編碼的字符串編碼。你也在編寫base64編碼的字符串來輸出文件字節是怎樣的。 – randominstanceOfLivingThing
Base 64是一種編碼字節的方法。您將一個字節數組轉換爲這些字節的字符表示形式。絕對沒有理由認爲64位編碼字節的字符串應該位於您正在編碼的字符串附近。例如。看一看[wiki](https://en.wikipedia.org/wiki/Base64)第一個例子顯示了你正在做的事情。 – matt