我正在将一个byte []写入文件并读取它。但是为什么byte []在写和读之间有所不同?这是我的代码:
import java.io.*;
public class test{
public static void main(String argv[]){
try{
byte[] Write = "1234567812345678".getBytes();
byte[] Read = new byte[16];
File test_file = new File("test_file");
test_file.mkdir();
String path = new String(test_file.getAbsolutePath()+"\\"+"test.txt");
File test_out = new File(path);
test_out.createNewFile();
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(test_out));
out.write(Write);
out.close();
File test_in = new File(path);
BufferedInputStream in = new BufferedInputStream(new FileInputStream(test_in));
while(in.available()>0)
in.read(Read);
in.close();
System.out.println(Write);
System.out.println(Read);
}catch ( Exception e ){
e.printStackTrace();
}
}
}
这是输出;输入和输出是不同的:
[B@139a55
[B@1db9742
答案 0 :(得分:1)
[B @ 139a55
[B @ 1db9742
这些是打印byte[]
的输出 - 它是对象的哈希码。它与其实际内容无关。
它只会告诉您正在打印两个不同的对象 - 它们的内容可能仍然相同。
您应该打印字节数组的实际内容:What's the simplest way to print a Java array?
答案 1 :(得分:0)
以这种方式打印byte[]
时,您将打印JVM的对象引用,而不是数组的内容。
试试这个:
System.out.println(Arrays.toString(Write));
System.out.println(Arrays.toString(Read));