▼Adobe AIRメモ▼
ファイルの読み書き


ファイルの読み書きを行うプログラムを作成する。

ソースコード
FileEx.as
package {
    import flash.display.*;
    import flash.events.*;
    import flash.filesystem.*;
    import flash.net.*;
    import flash.text.*;
   
    //ファイルへのデータ保存
    public class FileEx extends Sprite {
        private var textField:TextField;  //テキストフィールド
        private var btnWrite:CustomButton;//書き込みボタン
        private var btnRead:CustomButton; //読み込みボタン
        private var file:File;            //ファイル
        
        //コンストラクタ
        public function FileEx() {
            //テキストフィールドの生成
            textField                =new TextField();
            textField.text           ="FieldEx";
            textField.x              =5;
            textField.y              =5;
            textField.width          =230;
            textField.height         =210;
            textField.background     =true;
            textField.backgroundColor=0xFFFFFF;
            textField.type           =TextFieldType.INPUT;
            textField.multiline      =true;
            addChild(textField);

            //書き込みボタンの生成
            btnWrite=new CustomButton("書き込み");
            btnWrite.x=5;
            btnWrite.y=220;
            btnWrite.addEventListener(MouseEvent.CLICK,onWriteClick);
            addChild(btnWrite);
            
            //読み込みボタンの生成
            btnRead=new CustomButton("読み込み");
            btnRead.x=btnWrite.x+btnWrite.width+5;
            btnRead.y=220;
            btnRead.addEventListener(MouseEvent.CLICK,onReadClick);
            addChild(btnRead);
        }

        //書き込みクリックイベントの処理
        private function onWriteClick(evt:MouseEvent):void {
            file=File.desktopDirectory; 
            file.addEventListener(Event.SELECT,onWriteSelect);
            file.browseForSave("保存");
        }

        //読み込みクリックイベントの処理
        private function onReadClick(evt:MouseEvent):void {
            file=File.desktopDirectory; 
            file.addEventListener(Event.SELECT,onReadSelect);
            var filter:FileFilter=new FileFilter("テキスト","*.txt;*.html");
            file.browseForOpen("開く",[filter]);
        }
        
        //書き込み選択イベントの処理
        private function onWriteSelect(evt:Event):void {
            try {
                var fsw:FileStream=new FileStream();
                fsw.open(file,FileMode.WRITE);
                fsw.writeMultiByte(textField.text,"shift_jis");
                fsw.close();
            } catch (e:Error) {
                trace(e.toString());
            }
        }        

        //読み込み選択イベントの処理
        private function onReadSelect(evt:Event):void {
            try {
                var fsr:FileStream=new FileStream();
                fsr.open(file,FileMode.READ);
                textField.text=fsr.readMultiByte(file.size,"shift_jis");
                fsr.close();
            } catch (e:Error) {
                trace(e.toString());
            }
        }
    }
}

CustomButton.as
package {
    import flash.display.*;
    import flash.filters.*;
    import flash.text.*;

    //カスタムボタン
    public class CustomButton extends SimpleButton {

        //コンストラクタ    
        public function CustomButton(label:String="",fontSize:uint=12) {
            //位置
            this.x=x;
            this.y=y;

            //ボタンスプライト
            var downSprite:Sprite=makeButtonSprite(
                label,fontSize,0x000000,0xdddddd);
            var upSprite  :Sprite=makeButtonSprite(
                label,fontSize,0xdddddd,0x000000);
            var hitSprite :Sprite=makeButtonSprite(
                label,fontSize,0x000000,0x000000);
          
            //状態            
            downState   =downSprite;//ダウン
            overState   =upSprite;  //オーバー
            upState     =upSprite;  //アップ
            hitTestState=hitSprite; //当たり判定

            //手アイコンを指定
            useHandCursor=true;
        }
        
        //ボタンスプライトの生成
        private function makeButtonSprite(text:String,fontSize:uint,
            highlightColor:uint,shadowColor:uint):Sprite {
            //スプライト
            var sp:Sprite=new Sprite();
            //ラベルの指定
            var label:TextField=makeLabel(text,fontSize);
            //描画
            sp.graphics.beginFill(0xdddddd);
            sp.graphics.drawRect(0,0,
                label.textWidth+6,label.textHeight+6);
            sp.graphics.endFill();
            sp.addChild(label);
            //フィルタの指定
            var filter:BevelFilter=new BevelFilter();
            filter.blurX=2;
            filter.blurY=2;
            filter.distance=1;
            filter.highlightColor=highlightColor;
            filter.shadowColor=shadowColor;
            var myFilters:Array=new Array();
            myFilters.push(filter);
            sp.filters=myFilters; 
            return sp;         
        }

        //ラベルの生成
        private function makeLabel(text:String,fontSize:uint):TextField {
            var i:uint;
            var label:TextField=new TextField();
            label.autoSize=TextFieldAutoSize.LEFT;
            label.selectable=false;
            var format:TextFormat=new TextFormat();
            format.font="_等幅";
            label.text="■";
            for (i=fontSize+10;i>=1;i--) {
                format.size=i;
                label.setTextFormat(format);
                if (label.textWidth<=fontSize) break;
            }
            label.text=text;
            label.setTextFormat(format);
            label.x=3-(label.width -label.textWidth)/2;
            label.y=3-(label.height-label.textHeight)/2; 
            return label;
        } 
    }
}




−戻る−