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

Scala 读取相同的文件,但获取不同的字节,scala,hash,Scala,Hash,在foldleft中,我试图消化不同的图像。我很沮丧,决定读同一个文件,读同一个文件时,我收到了不同的字节数组!有人知道为什么会这样吗?下面是发生这种情况的代码,“swap.png”在运行期间从未更改 val capturedImage = outputScreen.capture val swap = new File("swap1.png") ImageIO.write(capturedImage, "png", swap) val bis = new BufferedInp

在foldleft中,我试图消化不同的图像。我很沮丧,决定读同一个文件,读同一个文件时,我收到了不同的字节数组!有人知道为什么会这样吗?下面是发生这种情况的代码,“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

您得到的是字节数组的toString表示(因为默认为)。Object.toString做什么?通常,它只打印有关对象在内存中位置的内部信息(所谓的)*。因此,在不同的运行中,在不同的RAM内存位置有不同的对象是完全可以的,因此输出是不同的。请尝试不要在最后一行中执行此问题
.mkString(“,”)

println(byte.mkString(","))

*但是可能会有不同的实现

您得到的是字节数组的toString表示(因为默认为)。Object.toString做什么?通常,它只打印有关对象在内存中的位置的内部信息(所谓的)*。因此,在不同的运行中,在不同的RAM内存位置有不同的对象是完全可以的,因此输出是不同的。请尝试不要在最后一行中执行此问题
.mkString(“,”)

println(byte.mkString(","))

*但是可能会有不同的实现方式

天啊,谢谢!我在那件事上花了不少心思。每天都学点新东西。天啊,谢谢!我在那件事上花了不少心思。每天都学点新东西