Apolloプログラミング入門(3)
Apollo File APIを用いて
ローカルファイルを読むには?
クラスメソッド
横田聡
2007/6/7
同期メソッドと非同期メソッド
Flashなど非同期に動くアプリケーションを書く場合、イベントリスナーを用いたイベント駆動のプログラミングが一般的です。
Apollo File APIでも、同じようにイベントリスナーを使って、ファイルが開き終わったり、ファイルをコピーし終わったらイベントが発生するように記述できます。同期処理は上から流れるように処理が進むので記述が非常に簡単です。
一方、大きなファイルを扱うときに、同期処理を使っては処理が止まってしまいます。Apollo File APIは用途に応じて、同期・非同期処理を使い分けできます。以下に、同期・非同期のメソッド一覧を載せます。
処理内容 | 同期 | 非同期 |
ファイルコピー | File.copyTo() | File.copyToAsync() |
ディレクトリ削除 | File.deleteDirectory() | File.deleteDirectoryAsync() |
ファイル削除 | File.deleteFile() | File.deleteFileAsync() |
ディレクトリ一覧 | File.listDirectory() | File.listDirectoryAsync() |
ファイル移動 | File.moveTo() | File.moveToAsync() |
ファイルゴミ箱へ | File.moveToTrash() | File.moveToTrashAsync() |
画像ファイルも読み込める
テキストファイルを読み込むように、画像ファイルを読み込み表示してみましょう。
まずは、実行結果を見てください。デスクトップ上に置いてある画像ファイル名を指定してボタンをクリックすると画像が表示されます。
画面4 画像ファイルの読み込みアプリの例 |
ソースコードもテキストファイルを読み込むのとよく似ています。違う部分はバイナリデータを読み込むところです。
<?xml version="1.0" encoding="utf-8"?> |
FileStreamクラスのreadBytesメソッドは、指定されたファイルをバイト列として読み込みます。
var ba:ByteArray = new ByteArray(); |
次に、Loaderクラスを用いてバイト列から画像を再現します。再現した画像データはImageタグに載せて表示させます。Loaderクラスはバイト列から自動的にJPG、PNG、GIFを判別してくれます。
var loader:Loader = new Loader(); |
■FileStreamクラスを使わずに画像を読み込む
また、FileStreamクラスを使わなくても、画像を読み込むこともできます。以下はその例です。
<?xml version="1.0" encoding="utf-8"?> |
Loaderクラスは指定されたURLから読み込むこともできます。Apolloは、ファイルパスをURL形式で指定できますので、同じようにURL指定で画像を読み込むこともできます。
var urlReq:URLRequest = new URLRequest(file.url); |
■パスを取得するには?
ちなみに、以下のようにtrace文を挿入してデバッグ実行すると、
trace(file.url); |
以下のように、それぞれURL形式とOSネイティブ形式のパスが取得できます。
file:///C:/Documents%20and%20Settings/satoshi/デスクトップ/logo.png |
次回はさまざまなファイルの書き込みについて
いかがでしたでしょうか? Apollo File APIを用いて、簡単にローカルファイルにアクセスできました。今回はファイルを読み込むことが中心でしたので、次回は書き込みについて解説をする予定です。特に、テキストファイル、画像、XMLファイルなどについてご紹介します。
■@IT関連記事
Apollo参戦でウィジェット開発者の争奪戦が激化 Ajax うきうき Watch(19) 似て非なるウィジェット開発のテクノロジ。互換性がないYahoo!ウィジェット、WPFに、Adobe Apolloの参戦で開発者の争奪戦がいよいよ始まる 「リッチクライアント & 帳票」フ ォーラム 2007/3/26 |
ブラウザの限界を超える「今」のリッチコンテンツ Webオーサリングツールを使ってみよう(番外編) これまで2回にわたって紹介したWebオーサリングツールを離れてリッチコンテンツを取り巻く「今」の状況に注目しよう 「リッチクライアント & 帳票」フ ォーラム 2007/5/22 |
リッチクライアントの潮流とFlexのオープンソース化 WCR Watch(18) 先日開催されたソフトウェア開発環境展(SODEC)に初のリッチクライアント ゾーンが設けられた話題やFlexのオープンソース化について解説する 「リッチクライアント & 帳票」フォーラム 2007/5/29 |
プロフィール:横田 聡(よこた さとし) クラスメソッド株式会社 代表取締役 業務向けアプリのRIA化を推進している会社です。業務ポータル/ビジネスインテリジェンス/顧客管理/営業支援のシステムなどワンストップで作っています。 最近は、業務向けモバイルアプリ開発や特定ユーザー向けアプリ開発なども行なっています。主にApollo/Flex/Java/C#/Flash/JavaScriptを使って仕事をしています。社員募集中です。会社ブログ(YOKOTA-LOG)と個人ブログ(FlexCoder)も更新中。 |
2/2 | 次回もお楽しみに |
INDEX | ||
Apolloプログラミング入門(3) | ||
Page1 Webアプリからはローカルファイルにアクセスしづらい│テキストファイルを開いて読み込んでみよう |
||
Page2 同期メソッドと非同期メソッド│画像ファイルも読み込める│次回はさまざまなファイルの書き込みについて |
- GASで棒、円、折れ線など各種グラフを作成、変更、削除するための基本 (2017/7/12)
資料を作る際に、「グラフ」は必要不可欠な存在だ。今回は、「グラフの新規作成」「グラフの変更」「グラフの削除」について解説する - GET/POSTでフォームから送信された値をPHPで受け取る「定義済みの変数」【更新】 (2017/7/10)
HTMLのフォーム機能についておさらいし、get/postメソッドなどの内容を連想配列で格納するPHPの「定義済みの変数」の中身や、フォーム送信値の取り扱いにおける注意点について解説します【PHP 7.1含め2017年の情報に合うように更新】 - PHPのfor文&ループ脱出のbreak/スキップのcontinue【更新】 (2017/6/26)
素数判定のロジックからbreak文やcontinue文の利点と使い方を解説。for文を使ったループ処理の基本とwhile文との違い、無限ループなども併せて紹介します【PHP 7.1含め2017年の情報に合うように更新】 - Spreadsheetデータの選択、削除、挿入、コピー、移動、ソート (2017/6/12)
Spreadsheetデータの選択、挿入、削除、コピー、移動、ソートに使うメソッドの使い方などを解説する
|
|