|
|
例:XML オブジェクトへの XML ファイルの読み取り以下の例では、XML データが格納されているテキストファイルの読み取りおよび書き込みを行う方法を示します。 ファイルからの読み取りを行うには、File オブジェクトと FileStream オブジェクトを初期化し、FileStream の readUTFBytes() メソッドを呼び出して、ストリングを XML オブジェクトに変換します。 var file = air.File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream = new air.FileStream();
fileStream.open(file, air.FileMode.READ);
var prefsXML = fileStream.readUTFBytes(fileStream.bytesAvailable);
fileStream.close();
同様に、ファイルへのデータの書き込みも、適切な File オブジェクトと FileStream オブジェクトを設定してから FileStream オブジェクトの書き込みメソッドを呼び出すだけで簡単にできます。書き込みメソッドには、次のように String 型の XML データを渡します。 var file = air.File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
fileStream = new air.FileStream();
fileStream.open(file, air.FileMode.WRITE);
var outputString = '<?xml version="1.0" encoding="utf-8"?>\n';
outputString += '<prefs><autoSave>true</autoSave></prefs>'
fileStream.writeUTFBytes(outputString);
fileStream.close();
これらの例では、ファイルが UTF-8 形式であるという前提で、readUTFBytes() メソッドと writeUTFBytes() メソッドを使用しています。形式が異なる場合は、別のメソッドを使用する必要がある場合があります(データ形式と使用する読み取りおよび書き込みメソッドの選択を参照)。 上記の例では、同期操作用に開いた FileStream オブジェクトを使用しています。ファイルは非同期操作用に開くこともできます(イベントに応答するイベントリスナー関数が必要になります)。例えば、次のコードは、XML ファイルを非同期で読み取る方法を示しています。 var file = air.File.documentsDirectory.resolvePath("AIR Test/preferences.xml");
var fileStream= new air.FileStream();
fileStream.addEventListener(air.Event.COMPLETE, processXMLData);
fileStream.openAsync(file, air.FileMode.READ);
var prefsXML;
function processXMLData(event)
{
var xmlString = fileStream.readUTFBytes(fileStream.bytesAvailable);
prefsXML = domParser.parseFromString(xmlString, "text/xml");
fileStream.close();
}
ファイル全体が読み取りバッファに読み取られると processXMLData() メソッドが呼び出されます(FileStream オブジェクトから complete イベントが送出される場合)。これにより、readUTFBytes() メソッドが呼び出されて String 型の読み取りデータが取得され、そのストリングに基づいて XML オブジェクトである prefsXML が作成されます。 これらの機能を示すサンプルアプリケーションについては、「XML 環境設定ファイルの読み取りと書き込みXML 環境設定ファイルの読み取りと書き込み」を参照してください。 |