ファイルの読み取りと書き込みのワークフロー

Adobe AIR 1.0 およびそれ以降

ファイルの読み取りおよび書き込みのワークフローを次に示します。

パスを参照する File オブジェクトを初期化します。

File オブジェクトは、操作対象のファイル(または後で作成するファイル)のパスを表します。

var file:File = File.documentsDirectory; 
file = file.resolvePath("AIR Test/testFile.txt"); 

この例では、File オブジェクトの File.documentsDirectory プロパティと resolvePath() メソッドを使用して File オブジェクトを初期化しています。ただし、File オブジェクトでファイルを参照する方法は、これ以外にも多数あります。詳しくは、 File オブジェクトでのファイルの参照 を参照してください。

FileStream オブジェクトを初期化します。

FileStream オブジェクトの open() メソッドまたは openAsync() メソッドを呼び出します。

呼び出すメソッドは、ファイルを開いて同期操作と非同期操作のどちらを行うかによって異なります。open() メソッドの file パラメーターとして File オブジェクトを使用します。 fileMode パラメーターに、ファイルの使用方法を示す FileMode クラスの定数を指定します。

例えば、次のコードでは、ファイルを作成して既存のデータを上書きするために使用する FileStream オブジェクトを初期化します。

var fileStream:FileStream = new FileStream(); 
fileStream.open(file, FileMode.WRITE); 

詳しくは、 FileStream オブジェクトの初期化とファイルのオープンおよびクローズ および FileStream を開く際のモード を参照してください。

ファイルを(openAsync() メソッドを使用して)非同期で開いた場合は、FileStream オブジェクトのイベントリスナーを追加して設定します。

これらのイベントリスナーメソッドは、様々な状況で FileStream オブジェクトから送出されたイベントに反応します。例えば、ファイルからのデータ読み取り時や I/O エラーの発生時、または書き込み対象のデータの書き込みが完了した時などの状況があります。

詳しくは、 非同期プログラミングと非同期で開いた FileStream オブジェクトで生成されるイベント を参照してください。

必要に応じて、データの読み取りおよび書き込みを行うためのコードを含めます。

FileStream クラスには、読み取りおよび書き込みに関連するメソッドが多数用意されています(それぞれ「read」または「write」で始まります)。データの読み取りおよび書き込みにどのメソッドを使用するかは、ターゲットファイルのデータの形式によって異なります。

例えば、ターゲットファイルのデータが UTF エンコード形式のテキストの場合は、 readUTFBytes() メソッドおよび writeUTFBytes() メソッドを使用できます。データをバイト配列として処理する場合は、 readByte() readBytes() writeByte() および writeBytes() の各メソッドを使用できます。詳しくは、 データ形式と使用する読み取りおよび書き込みメソッドの選択 を参照してください。

ファイルを非同期で開いた場合は、読み取りメソッドを呼び出す前に、十分なデータを使用できることを確認します。詳しくは、 読み取りバッファーと FileStream オブジェクトの bytesAvailable プロパティ を参照してください。

ファイルに書き込む前に、利用可能なディスク領域の容量を確認する場合は、File オブジェクトの spaceAvailable プロパティを確認します。詳しくは、 ボリューム上の利用可能な領域の特定 を参照してください。

ファイルの処理が完了したら、FileStream オブジェクトの close() メソッドを呼び出します。

close() メソッドを呼び出すと、他のアプリケーションでファイルを使用できるようになります。

詳しくは、 FileStream オブジェクトの初期化とファイルのオープンおよびクローズ を参照してください。

FileStream クラスを使用してファイルの読み取りおよび書き込みを行うサンプルアプリケーションについては、Adobe AIR デベロッパーセンターの次の記事を参照してください。