如何在 Scala 中将文件读取为字节数组
我可以找到大量示例,但它们似乎要么主要依赖于 Java 库,要么只是读取字符/行/等。
我只想读入一些文件并获取带有 scala 库的字节数组 - 有人可以帮助我吗?
I can find tons of examples but they seem to either rely mostly on Java libraries or just read characters/lines/etc.
I just want to read in some file and get a byte array with scala libraries - can someone help me with that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
Java 7:
我相信这是最简单的方法。只需利用此处现有的工具即可。 NIO.2 很棒。
Java 7:
I believe this is the simplest way possible. Just leveraging existing tools here. NIO.2 is wonderful.
这应该有效(Scala 2.8):
This should work (Scala 2.8):
库 scala.io.Source 有问题,不要用它来读取二进制文件。
可以按照此处的说明重现该错误:https://github.com/liufengyun/scala-bug
在文件
data.bin
中,它包含十六进制0xea
,其二进制为11101010
,应转换为234< /代码> 在十进制。
main.scala
文件包含两种读取文件的方法:当我运行
scala main.scala
时,程序输出如下:Java 库生成正确的输出,而 Scala 生成正确的输出。图书馆没有。
The library scala.io.Source is problematic, DON'T USE IT in reading binary files.
The error can be reproduced as instructed here: https://github.com/liufengyun/scala-bug
In the file
data.bin
, it contains the hexidecimal0xea
, which is11101010
in binary and should be converted to234
in decimal.The
main.scala
file contain two ways to read the file:When I run
scala main.scala
, the program outputs follows:The Java library generates correct output, while the Scala library not.
您还可以考虑使用 scalax.io:
You might also consider using scalax.io:
您可以使用 Apache Commons 压缩
IOUtils
You can use the Apache Commons Compress
IOUtils
使用 Scala Future 和 Java NIO2 异步文件读取
Asynchronous File reading using Scala Future and Java NIO2
我使用下面的代码来读取 CSV 文件。
I have used below code to read a CSV file.