2012-02-06 7 views
0

AMFを使用してJavaに戻るフレックスフロントエンド。 書き込み中のファイルをリアルタイムで読み取ろうとしています。たとえば、ログです。FLEXのテキストファイル(> 25MB)を置換するためのコンポーネント

JavaのRandomAccessFileクラスを使用して、ファイルの「新しい」行を読み込み、次回から読み込みを開始するバイトオフセットと共にUIにバイト配列として戻します。

テキストファイルのすべての行を表示するには、mx:Listを使用します。

私が実行している問題は、Flex、またはFlash Playerで、25 MBを超える軽度のファイルでメモリが不足していることです。 大量のテキストデータをFlexで表示する方法がありますか?それとも、Flex/Flashはこれをうまく処理できないのですか?

ありがとうございました。

答えて

1

25MBがほんのわずかであれば、データをコンポーネントにページする必要があり、一度にメモリに数ページだけを格納する必要があると言えます。私はおそらくリスト上のTextAreaのようなものを選ぶだろうが、あなたがしなければならないもののようなすべてのデータを持っていなければ、TextAreaのシームレスなスクロールを作成するのは難しいかもしれない。今のところリストに固執して、ページを作ろうとする行の数を決めます。そして、あなたは、メモリ内のページのページと店舗X番号をロードしますが、あなたのモデルがそうスクロールバーがレンダリングすることができますどのように大きな知っているファイルでtotalLinesを使用することができます

// 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; 
} 

:等の方法として、あなたのバックエンドを実装します正しく。まだロードされていないページをロードするページングデータプロバイダを構築するだけで、表示されていないページや表示されているページから最も離れたページを捨てる必要があります。

0

現在、私はcomponentに取り組んでおり、100Mbまでのテキストを高速に表示することができます。あなただけのLongTextAreaであなたのmx:TextAreaを置き換えることができます。

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

Download LongTextArea SWC.

関連する問題