В моей программе есть сценарий использования, в котором мне нужно взять файл, разделить их поровну N раз и загрузить их удаленно.
Мне нужна функция, которая принимает, скажем, File
и выводит список BufferedReader
. На что я могу просто распространять их и отправлять в другую функцию, которая использует некоторый API для их хранения.
Я видел примеры, когда авторы используют .lines()
метод BufferedReader
:
def splitFile: List[Stream] = {
val temp = "Test mocked file contents\nTest"
val is = new ByteArrayInputStream(lolz.getBytes)
val br = new BufferedReader(new InputStreamReader(is))
// Chunk the file into two sort-of equal parts.
// Stream 1
val test = br.lines().skip(1).limit(1)
// Stream 2
val test2 = br.lines().skip(2).limit(1)
List(test, test2)
}
Полагаю, что приведенный выше пример работает, он не красивый, но работает.
Мои вопросы:
- Есть ли способ разбить
BufferedReader
на несколько списков потоков?
- Я не контролирую формат
File
, поэтому содержимое файла может быть длиной в одну строку. Разве это не означает, что .lines()
просто загрузит все это в Stream
одного элемента?