2015-10-19 41 views
0

我想写一个字节数组到文件,然后再读一遍。问题是我读的字节数组与我写的不同。 下面的代码的输出是:从我写的不同字节读取

[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); 
+4

实例不同,但是您检查了内容吗? – Tunaki

+3

这不是你如何检查数组是否相等,而是使用Arrays.equals(byte [] 1,byte [] 2)而不是 –

+0

当你看到一个像[[B @ ...]这样的字符串时,你应该注意到它是一个变量引用而不是其内容。 ''表示数组,''表示''字节''B','...处...“表示'... ...'。 –

回答

2

阵列不有一个正确的字符串表示。要查看内容,请使用下面的内容代替

System.out.println(java.util.Arrays.toString(encryptedKey)); 
System.out.println(java.util.Arrays.toString(encryptedKey2)); 
+0

其实我可以自己想想,非常感谢! – user3376554

+0

@ user3376554如果我的回答对你有帮助,你能接受吗? :) –