从我写的不同字节读取
问题描述:
我想写一个字节数组到文件,然后再读一遍。问题是我读的字节数组与我写的不同。 下面的代码的输出是:从我写的不同字节读取
[B @ 21a06946(原始字节数组写入)
[B @ 2fc14f68(字节阵列读取)
byte[] encryptedKey = rsaCipher.encrypt(AESKey, publicKeyPathName, transformation, encoding);
System.out.println(encryptedKey);
List<byte[]> list = new ArrayList<byte[]>();
list.add(encryptedKey);
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("encryptedKey"));
out.writeObject(list);
out.close();
ObjectInputStream in = new ObjectInputStream(new FileInputStream("encryptedKey"));
List<byte[]> byteList = (List<byte[]>) in.readObject();
in.close();
byte[] encryptedKey2 = byteList.get(0);
System.out.println(encryptedKey2);
答
阵列不有一个正确的字符串表示。要查看内容,请使用下面的内容代替
System.out.println(java.util.Arrays.toString(encryptedKey));
System.out.println(java.util.Arrays.toString(encryptedKey2));
+0
其实我可以自己想想,非常感谢! – user3376554
+0
@ user3376554如果我的回答对你有帮助,你能接受吗? :) –
实例不同,但是您检查了内容吗? – Tunaki
这不是你如何检查数组是否相等,而是使用Arrays.equals(byte [] 1,byte [] 2)而不是 –
当你看到一个像[[B @ ...]这样的字符串时,你应该注意到它是一个变量引用而不是其内容。 ''表示数组,''表示''字节''B','...处...“表示'... ...'。 –