fgy*_*ica 72 io scala bytearray
我可以找到大量的例子,但它们似乎要么主要依赖于Java库,要么只是读取字符/行/等.
我只想阅读一些文件并获得带有scala库的字节数组 - 有人可以帮助我吗?
Vla*_*eev 128
Java 7:
import java.nio.file.{Files, Paths}
val byteArray = Files.readAllBytes(Paths.get("/path/to/file"))
Run Code Online (Sandbox Code Playgroud)
我相信这是最简单的方法.只需在此处利用现有工具.NIO.2太棒了.
Jus*_*s12 42
这应该工作(Scala 2.8):
val bis = new BufferedInputStream(new FileInputStream(fileName))
val bArray = Stream.continually(bis.read).takeWhile(-1 !=).map(_.toByte).toArray
Run Code Online (Sandbox Code Playgroud)
小智 6
val is = new FileInputStream(fileName)
val cnt = is.available
val bytes = Array.ofDim[Byte](cnt)
is.read(bytes)
is.close()
Run Code Online (Sandbox Code Playgroud)
库scala.io.Source存在问题,请勿在读取二进制文件时使用它.
错误可以按照此处的说明重现:https://github.com/liufengyun/scala-bug
在文件中data.bin,它包含十六进制0xea,11101010二进制,应转换为234十进制.
该main.scala文件包含两种读取文件的方法:
import scala.io._
import java.io._
object Main {
def main(args: Array[String]) {
val ss = Source.fromFile("data.bin")
println("Scala:" + ss.next.toInt)
ss.close
val bis = new BufferedInputStream(new FileInputStream("data.bin"))
println("Java:" + bis.read)
bis.close
}
}
Run Code Online (Sandbox Code Playgroud)
当我跑步时scala main.scala,程序输出如下:
Scala:205
Java:234
Run Code Online (Sandbox Code Playgroud)
Java库生成正确的输出,而Scala库不生成.
| 归档时间: |
|
| 查看次数: |
53741 次 |
| 最近记录: |