读取相同的文件但获得不同的字节

时间:2013-03-18 04:29:53

标签: scala hash

在折叠中,我试图消化不同的图像。我感到沮丧并决定阅读相同的文件,我收到了不同的字节数组来读取同一个文件!有谁知道为什么会这样?以下是发生这种情况的代码,“swap.png”在运行期间永远不会改变

  val capturedImage = outputScreen.capture
  val swap = new File("swap1.png")
  ImageIO.write(capturedImage, "png", swap)
  val bis = new BufferedInputStream(new FileInputStream("swap.png"))
  val byte = Stream.continually(bis.read).takeWhile(-1 !=).map(_.toByte).toArray
  println(byte.toString)

这是一些输出

[B@31302ed5
[B@3a56d071
[B@6039d718
[B@3490e5eb
[B@2f29608e
[B@4c09c5c3

1 个答案:

答案 0 :(得分:4)

你得到的是toString字节数组(由于[B)的表示,默认为Object.toString()。 Object.toString做什么?通常,它只打印关于对象在内存中的内部信息(所谓的identity hash)*。因此,在不同的运行时将不同的对象放在不同的RAM存储器位置,从而产生不同的输出是完全正常请尝试在最后一行中执行此问题.mkString(",")

println(byte.mkString(","))

*但可能有不同的实现