start: Long
- end: Long
からいくつかの範囲のバイトを抽出する必要があるバイナリファイルがあります。いくつかのギガバイトがあるのでLong
が必要です。私のアプリは結果をByteString
として返す必要があります。 (これはバグです?skip
は... Long
とokです)のみInt
、私はScalaのファイルからバイトの範囲を抽出します
val content: Array[Byte] = Array()
val stream: FileInputStream = new FileInputStream(file: File)
stream.skip(start)
stream.read(content, 0, end-start)
を試みたが、すでに私はread
でLong
を使用することはできません。また、結果をByteString
に変換する必要があります。私も、これを実行するのが大好きだ:
val stream: FileInputStream = new FileInputStream(file: File)
stream.skip(start)
org.apache.commons.io.IOUtils.toByteArray(stream)
が、どのように私はどこ最後にそれを教えていますか? stream
には方法がありませんtakeWhile
またはtake
です。それから私は、再び私はそれを行うことができますどのようにdrop
でのみInt
...
を
val source = scala.io.Source.fromFile(file: File)
source.drop(start).take(end-start)
を試してみましたか?
http://stackoverflow.com/questions/28883876/can-i-do-a-lazy-take-with-a-long-parameter –
:代わりに、あなたのような何かを行う必要がありますPlayではバイト範囲の要求に対して正しい応答を実装しようとしていますが、最近Playがそれを実装しているように見え、「公開資産を使って作業する」という文書を書いています... – JulienD