AIRのFileクラスはASだけやってる人にはちょっとなじみがなくて、小さなところでハマるなーと思ったのでメモを残していくことにします。

ディレクトリから相対的にパスを生成する際にハマったのですが、 ディレクトリのFileクラスにファイル名を追加できるのかと思いきや、 これはFileインスタンスにパスを追加した新しいインスタンスが返ってきます。

import flash.filesystem.File; var appStorageDir:File = File.applicationStorageDirectory; var newfile = appStorageDir.resolvePath( "test.xml" );

ついでに ファイルの入出力について

書き込むためのメソッドが、writeBooleanwriteBytewriteByteswriteDouble、writeFloatwriteIntwriteMultiBytewriteObjectwriteShortwriteUnsignedIntwriteUTFwriteUTFBytesとなっています。

これはObjectタイプがそのまま書き込めるので、つまり任意のクラスインスタンスをそのまま突っ込んだりすることも可能ということです。 また書き込んだデータはそれぞれのreadメソッドでデシリアライズ(?)されて受け取れるので、 (セキュリティとかパフォーマンスの面でのぜひはともかく)透過的にデータ処理ができます。

import flash.filesystem.File; import flash.filesystem.FileStream; import flash.filesystem.FileMode; var str :FileStream = new FileStream(); try { // fileであらわされるパスを書き込みモードで開く str.open( file, FileMode.WRITE ); // 開いたパスに書き込む str.writeObject( new Date() ); } catch (e:Error) { //エラーが発生したら何かする } finally { // 何があっても最終的には閉じる str.close(); }

HTML5飯