最好在不使用外部库的情况下,将字符串或文件添加到Scala中的另一个大文件的最有效(或推荐)方法是什么?大文件可以是二进制文件。
例如
如果前缀字符串为:
header_information|123.45|xyz\n
大文件是:
abcdefghijklmnopqrstuvwxyz0123456789
abcdefghijklmnopqrstuvwxyz0123456789
abcdefghijklmnopqrstuvwxyz0123456789
...
我希望得到:
header_information|123.45|xyz
abcdefghijklmnopqrstuvwxyz0123456789
abcdefghijklmnopqrstuvwxyz0123456789
abcdefghijklmnopqrstuvwxyz0123456789
...
答案 0 :(得分:0)
我提出以下解决方案:
使用java.nio.file。 Files.copy 写入目标文件
object FileAppender {
def main(args: Array[String]): Unit = {
val stringToPrepend = new ByteArrayInputStream("header_information|123.45|xyz\n".getBytes)
val largeFile = new FileInputStream("big_file.dat")
Files.copy(
new SequenceInputStream(stringToPrepend, largeFile),
Paths.get("output_file.dat"),
StandardCopyOption.REPLACE_EXISTING
)
}
}
在约30GB的文件上进行测试,在MacBookPro(3.3GHz / 16GB)上花费了约40秒。
可以使用这种方法(如有必要)来组合由例如火花引擎。