Как загрузить более 4 ГБ одновременно в буфер памяти?

Ваша проблема связана с типом static, который требует новой инициализации каждый раз, когда цикл повторяется. Если вы находитесь в цикле, лучше сохранить конкретную инициализацию внутри цикла.

List<Object> objects = new ArrayList<>(); 

for (int i = 0; i < length_you_want; i++) {
    SomeStaticClass myStaticObject = new SomeStaticClass();
    myStaticObject.tag = i;
    // Do stuff with myStaticObject
    objects.add(myStaticClass);
}

Вместо:

List<Object> objects = new ArrayList<>(); 

SomeStaticClass myStaticObject = new SomeStaticClass();
for (int i = 0; i < length; i++) {
    myStaticObject.tag = i;
    // Do stuff with myStaticObject
    objects.add(myStaticClass);
    // This will duplicate the last item "length" times
}

Здесь tag является переменной в SomeStaticClass проверить правильность приведенного выше фрагмента; у вас может быть другая реализация, основанная на вашем случае использования.

-3
задан D.R. 5 March 2019 в 17:59
поделиться

1 ответ

Вы не можете сделать это с помощью одного вызова функции Win32 API. Вызывайте ReadFile несколько раз, считывая блоки размером не более 4 ГБ, пока не прочитаете все, что нужно прочитать.

Если это поможет вашему желанию сделать один вызов функции, оберните этот цикл в функцию, которую вы определяете, и вызовите ее.

0
ответ дан David Heffernan 5 March 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: