Компонент для перемещения (> 25 МБ) текстового файла в FLEX - PullRequest
0 голосов
/ 07 февраля 2012

Flex интерфейс с использованием AMF для Java обратно. Попытка чтения в режиме реального времени файла, в который выполняется запись. Например, журнал.

Я использую Java-класс RandomAccessFile для чтения «новых» строк файла и отправки их обратно в пользовательский интерфейс в виде байтового массива вместе со смещением байтов, чтобы начать чтение со следующего раза.

Использование mx: List для отображения всех строк текстового файла.

Проблема, с которой я сталкиваюсь, заключается в том, что Flex или Flash Player не хватает памяти для файлов небольшого размера,> 25 МБ. Есть ли какой-нибудь предпочтительный метод отображения больших объемов текстовых данных во Flex, который мне не хватает? Или Flex / Flash просто плохо с этим справляется, и я в основном облажался?

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Если размер 25 МБ незначительно велик, я бы сказал, что вам, вероятно, нужно разместить данные в компоненте и просто сохранить в памяти только пару страниц за раз. Я бы, вероятно, выбрал что-то вроде TextArea, а не List, но создание плавной прокрутки для TextArea может быть затруднено, если у вас нет всех данных, которые по звучанию напоминают то, что вам придется делать. Так что придерживайтесь списка пока, и выясните, сколько строк вы хотите сделать страницу. И реализуйте свой бэкэнд как метод вроде:

// service call interface
public Page getPage( int lineStart, int lines );

// response object from the service call
public class Page {
    private var _totalLines:int;
    private var _lineStart:int;
    private var _lineEnd:int;

    [ArrayElementType("String")]
    private lines:ArrayCollection;
}

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

0 голосов
/ 12 февраля 2012

Сейчас я работаю над компонентом , который сможет быстро отображать до 100 МБ текста. Вы можете просто заменить ваш mx:TextArea на LongTextArea:

<longText:LongTextArea text="{...}"/>

Загрузить LongTextArea SWC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...