Может показаться странным, но у меня есть огромный файл, и мне нужно обработать его, получить диапазоны потока и обращаться с ними как с самими потоками, которые затем я могу рекурсивно получить из потока меньшего размера.
Проблема, которую я пытаюсь избежать, — это копирование огромных объемов данных в память, скажем, у вас есть XML-файл объемом 4 ГБ, я хотел бы открыть его потоком файлов.
Я могу найти в потоке определенный токен, а затем продолжить поиск завершающего токена. Этот диапазон байтов может иметь размер 2 ГБ, что означает, что размещать его в переменной нецелесообразно.
Я мог бы написать обертку вокруг «переменной» и любую попытку чтения или записи в нее, я мог бы контролировать, например, сказать, что я хочу найти в этой переменной другой токен / терминатор, а затем вернуть другой поток, представляющий этот диапазон байтов. тоже.
Таким образом, все это будет похоже на удержание местоположения offset + range в огромном файле без копирования каких-либо данных в память, мне просто нужно будет сохранить диапазоны начального / конечного байтов для каждой «переменной», а затем, когда я Я абсолютно уверен, что хочу прочитать данные в переменную, я могу их экспортировать.
Это позволило бы обойти проблему хранения огромных объемов данных в памяти, и я знаю о проблемах с производительностью, я бы предпочел решение, которое работало, чем решение, которое использовало гигабайты памяти
Задача ещё не решена.
Других решений пока нет …