AIRでのファイルの読み書き

今日はファイルの処理を勉強


まず、ファイルの開き方には同期的と非同期的の2種類があります。
2つの違いは

同期的:
ファイルの読み書きをしている間アプリケーションは待機状態になる。

非同期的:
ファイルの読み書きをしている間にもアプリケーションは別の処理を行うことが出来る。


ファイルの読み書きの処理が多いアプリケーションでは同期的だとアプリケーションの動作が止まってしまうので、非同期的の方を使うといいそうです。



実際に超簡単な物を作ってみた



デスクトップのdata.txtというファイルを開いたり、書き込んでみたりするというもの


ダウンロード

ソース



いろいろ解説

まず、ファイルを開くとき同期、非同期とは別にwrite、read、append, updateの4つのモードがあります。
write:
指定したファイルが存在する場合は上書きし、存在しない場合は新たに生成します。

read:
指定したファイルが存在する場合は読み取り専用で開き、存在しない場合はエラーを出します。

append:
指定したファイルが存在する場合は書き込む文字列を末尾に追加します、存在しない場合は新たに生成します。

update:
指定したファイルが存在する場合は読み書きモードで開き、存在しない場合は新たに生成します。


例えばファイルを同期的にreadで開きたいときは

var file:File = File.desktopDirectory.resolvePath("data.txt"); //デスクトップのdata.txt
var stream:FileStream = new FileStream();
stream.open(file, "read");  //"read"の部分はFileMode.READでもOK

以下、読み込み処理


こんな感じです。


次に非同期の場合は

stream.addEventListener(Event.COMPLETE, readFunction);  //readFunctionの中で読み込み処理
			
//読み込みモードで非同期的に開く
stream.openAsync(file, FileMode.READ);


というように、ファイルのロードが完了したら読み込み処理を行うというように書きます。


読み込み処理などはソースコードを参照してください。