start: Long
- end: Long
의 바이트 범위를 추출해야하는 바이너리 파일이 있습니다. 몇 기가 바이트가 있기 때문에 Long
이 필요합니다. 내 앱은 결과를 ByteString
으로 돌려줘야합니다. 내가 Scala의 파일에서 바이트 범위 추출
val content: Array[Byte] = Array()
val stream: FileInputStream = new FileInputStream(file: File)
stream.skip(start)
stream.read(content, 0, end-start)
을 시도했지만 이미 내가
read
에
Long
을 사용할 수 없습니다 만
Int
(이 버그?
skip
가
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