| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > CharSequence из текстового файла |
| Автор: ivanovpv 28.7.2010, 12:34 |
| Есть функция на вход которой подается объект с таким типом (CharSequence). Есть большой текстовый файл (несколько мегов), который целиком в оперативку ясен пень не лезет. Надо бы написать реализацию интерфейса CharSequence так чтобы он мог брать файл произвольной длины при необходимости подкачивая из диска. Может кто-то где-то видел такие исходники? Буду премного благодарен - сидеть писать самому как-то муторно. |
| Автор: jk1 28.7.2010, 13:45 | ||
С произвольной длинной файла довольно сложно, в самом деле, как для произвольной длины реализовывать вот такой метод из charSequence:
? |
| Автор: Skipy 28.7.2010, 13:45 | ||
Если бы Вы сказали несколько гигов - это бы было понятно. А несколько мегов в оперативку поместится целиком раз сто, и еще место останется. |
| Автор: LSD 28.7.2010, 17:57 |
| Уже http://forum.vingrad.ru/forum/topic-61598.html. Добавлено через 3 минуты и 55 секунд И по моему Stampede, даже где-то выкладывал получившийся код. |
| Автор: jk1 28.7.2010, 18:55 | ||||
И правда элементарно. Работало бы, вообще б цены не не было Допустим цикл из одной итерации - это опечатка
Что мы имеем, если её поправим: в случае начального length=0; длина всегда нулевая, в случае задания начального length=-1; код выдает нечто, не соответствующее длине файла если размер файла превышает диапазон инта. Ну и наконец на сколько-нибудь приличных по размеру файлах это работает огромное количество времени. |
| Автор: ivanovpv 29.7.2010, 07:57 | ||
Это не цикл из одной итерации, а бесконечный цикл
Предлагайте альтернативу! |
| Автор: jk1 29.7.2010, 08:59 | ||
Будем посмотреть |
| Автор: pathfinder 29.7.2010, 12:01 |
| Если файл содержит символы в однобайтовой кодировке(или в многобайтовой но на каждый символ выделяется одно и то же количество, например UTF16) то размер потока можно узнать через File.length()(File.length()/КолБайтНаСимвол) Иначе только размер потока можно узнать только пробежавшись по всему файлу. |