将byte []写入文件并从文件中读取byte []

时间:2015-12-29 18:00:13

标签: java

我正在将一个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

2 个答案:

答案 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));