December 22, 2007

ファイル操作1 テキストファイルの読み込み/書き出し

デスクトップにある「hoge.txt」を読みこんで編集して上書き保存してみる。

まず、ローカルファイルへのアクセスとか読み書きにはflash.filesystem.Fileクラスとflash.filesystem.FileStreamクラスを使うのでimportする。面倒だから

import flash.filesystem.*

でいいよね。
次に、hoge.txtへの参照を取得する。これはFileクラスの仕事。

var file:File = File.desktopDirectory.resolvePath(“hoge.txt”);

File.desktopDirectoryでデスクトップへのパス、さらにresolvePath()でhoge.txtへのパス。ディレクトリを辿っていくときはresolvePath(“air/test/hoge.txt”)みたいな感じじゃね?試してないけど

次に、実際にファイルの中身を読み込んでみる。ここからはFileStreamクラスの仕事。
まずオブジェクトを用意する。

var stream:FileStream = new FileStream();

したら、ファイルを読み込み専用でオープンする。ファイルが見つからない場合にはエラーを吐かれるのでtry{}catch{}finaly{}で囲んでおく。

try {
 stream.open(file, FileMode.READ);//読み込み専用でオープン

 var str:String = stream.readUTFBytes(stream.bytesAvailable);//stream.readUTFBytes()メソッドは、ファイルをUTF8のデータとして読み込むメソッド。
 //引数には読み込むデータの長さを指定する。stream.bytesAvailableはstream.open()メソッドによってバッファに読み込みが完了しているデータ量。
 //stream.open()だと、完全に読み込むまでは次の処理に移らないので、全部のデータ量が既にバッファに読み込まれている。

 output.text = str.replace(/\r\n/g, “\n”);//テキストボックスに表示。改行をごにょごにょしてます

} catch (error:IOError) {
 trace(error.message);//エラーが出たら表示

} finally {
 stream.close();//エラーの有無に関わらず、ファイルをクローズする。
}

これで、テキストファイルhoge.txtの内容が表示される。文字化けしてるときは保存形式を確認。UTF-8

次は書き込み。基本的には読み込みと同じ。
ステージに「上書き保存」のボタンでも作って、リスナー登録しておく。

function writeData(Evt:MouseEvent):void {

 try {//ファイルオープンでエラーが出たときのために
  stream.open(file, FileMode.WRITE);//書き込み専用でオープン
  stream.writeUTFBytes(output.text);//stream.writeUTFBytes()メソッドは、StringをUTF8のデータとして書き込むメソッド。
 } catch (error:IOError) {
  trace(error.message);//エラーが出たら表示
 } finally {
  stream.close();//エラーの有無に関わらず、ファイルをクローズする。
 }
}

ね?簡単でしょう
ディレクトリへの参照は他にも

applicationResourceDirectory:FileアプリケーションのリソースがインストールされているディレクトリapplicationStorageDirectory:Fileアプリケーション毎に割り当てられる保存用ディレクトリdesktopDirectory:FileユーザのデスクトップディレクトリdocumentsDirectory:FileユーザのドキュメントディレクトリuserDirectory:Fileユーザのホームディレクトリ

がある。また、ファイルをオープンする際に指定するタイプは、

FileMode.READ読み込み専用。FileMode.WRITE書き込み専用。ファイルは常に上書きされる。ファイルが存在しなければオープン時に作成される。FileMode.APPEND書き込み専用。データは常にファイル末尾に追記される。ファイルが存在しなければオープン時に作成される。FileMode.UPDATE読み書き両用。ファイルの任意の位置から読み書き可能。ファイルが存在しなければオープン時に作成される。

がある。