Я пытаюсь реализовать многопоточное средство чтения файлов, где в каждом потоке читается кусок байта из одного и того же файла.Я инициализирую Reader
в каждом потоке и skip
соответственно, но мой Reader
используется другой библиотекой (CsvMapReader
), и я хотел бы, чтобы поток читал только chunk
байтов.Как сделать так, чтобы объект Reader
, который я передаю CsvMapReader
, мог читать только chunk
байтов, а не до EOF.
Пример:
Thread reader = new Thread(() -> {
BufferedReader br = new BufferedReader("large_file");
br.skip(chunkSize);
CsvMapReader leftFileReader = new CsvMapReader(br, filePreference);
while (csvMapReader.read() != null) { /* This loop should only iterate until chunksize bytes are processed, and no more */
// do something
}
})
reader.start();
Предположим,У меня есть несколько потоков, каждый из которых пропускает несколько кратных chunkSize
.По сути, я хотел бы выполнять цикл только до тех пор, пока не будет обработано chunkSize
байт.