Будь проклят день, когда придумали Яву. :) Нужно сохранить в файл int array а FileOututStream::write(byte[]) просит только байтовый массив и кастинг не работанет. Памагыте.
Да, я уже нашел, но я расщитывал записать просто значения массива последовательно и все, а тут весть объект серится. Почему простые вещи надо делать через жопу?
Нашел я WriteInt, но это что ж, в цикле поинтово писать? Мне надо быстро. Задача такая. Надо самбнейлы картинок сгенерить а потом их эффективно подкачивать по мере прокрутки. Решил залить их несжатыми в один файл и потом промапить файл в память, создавать битмэпки указывая им где нужный кусок данных в памяти. Вот на первом же этапе застрял. Знаю что на С сделать это - раз плюнуть а тут как рыба на суше.
2 Лан. Молодой человек, мне нужно не проще, а эффективней. Собсно уже есть написаный и работающий код, но написан он в духе предланаемых тут советов и поэтому работает меееедлено. А надо быстро.
Если бы ты меньше дерзил, возможно тебе больше людей бы ответило. Ты уверен, что у тебя медленно именно из-за тех проблем, о которых тут спрашиваешь? Судя по твоим знания Java медленно может быть из-за чего угодно.
> Нашел я WriteInt, но это что ж, в цикле поинтово писать? Мне надо быстро.
Пиши в цикле. Главное - не забудь поверх FileOutputStream создать BufferedOutputStream, и уже в него писать данные. Вот если в этом случае тебе не хватит скорости - тогда уже думай насчёт усложнений, смены формата сохранения картинки или смены языка.
Только не понял, нужно ли аллоцировать байт баффер. С этим потом разберемся.
2lan
Я не собираюсь грузить самбнейлы в память, пусть этим заниметеся линукс по мере необходимости - вот тебе и первая выгода. На то он и мемори маппед файл.
У меня на хипе(куче) ограничение, а ММФ туда не вкючается - вот тебе и вторая выгода.
Интересное решение. Вот видишь! Надо почитать и все получится!
> Я не собираюсь грузить самбнейлы в память, пусть этим заниметеся линукс по мере необходимости - вот тебе и первая выгода. На то он и мемори маппед файл. У меня на хипе(куче) ограничение, а ММФ туда не вкючается - вот тебе и вторая выгода.
Отлично. =)
P.S. Спасибо, что запостил решение. Возможно кому-то пригодится!
Да, но это я уже в брозере редактировал для простоты илюстрации. Там у меня более сложное выражение. Кроме того, 5 тоже не годится - надо 5*sizeof(int)
Я это вдуплил еще в начале, когда ставил под сомнение необходимисть второй аллокации. Но она таки нужна. По крайней мере я не знаю как прокастить int[] в byte[] без копирования. Думается, это в принципе не возможно. Такова идеология жабы. С мемори маппед файлами тоже жопа вышла. Нет в них никакого толку без возможности маппировать на них объекты. Не понимию, зачем они вообще нужны в Яве.