ファイル操作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();//エラーの有無に関わらず、ファイルをクローズする。
}
}
ね?簡単でしょう
ディレクトリへの参照は他にも
がある。また、ファイルをオープンする際に指定するタイプは、
FileMode.READ読み込み専用。FileMode.WRITE書き込み専用。ファイルは常に上書きされる。ファイルが存在しなければオープン時に作成される。FileMode.APPEND書き込み専用。データは常にファイル末尾に追記される。ファイルが存在しなければオープン時に作成される。FileMode.UPDATE読み書き両用。ファイルの任意の位置から読み書き可能。ファイルが存在しなければオープン時に作成される。がある。
1 year ago • 0 notes