プログラミング工房
TOP
Flex基本
開発環境 JavaScript連携 PHP連携1 PHP連携2(AMFPHP) ウィンドウ ボタンスキン 矩形スキン ローカルファイル(テキスト) F5等の対策 ローカルファイル(イメージ) ダウンロード、アップロード 1枚の画像のカラーを変更 時間のかかる計算処理 外部SWFの読込み
Flexで3D
Flexだけで3D Papervision3Dを使ってみる 3Dオブジェクト カメラ、前後判定の工夫しました 自由な形状を作成
Flexでクラス
Class1(白黒ゲームの盤) Class2(白黒ゲームのプレイヤー) Class3(プレイヤーを外部SWF)
PHP
共通関数1
Flexの作品
お問合せの説明 サンプルのソース表示の説明 分子構造の表示(PDBファイル) マンデルブロ集合の画像作成 swf参加型白黒ゲーム(Reversi) ストップウォッチ WEB素材
AIR
AIRを使ってみる ソースファイルのHTML変換を作る
etc.
マンデルブロ集合のギャラリー ジュリア集合のギャラリー wonderflを使ってみました お問合せ

Flex4基本-ローカルファイル(テキスト)

■2011.03.02:作成
サンプル サンプルのソース
サンプルは「Flex4基本-F5等の対策」と同じものです。

ローカルファイルの読み書き

Flex4には「FileReference」と言うクラスがあり、このクラスを利用するとサーバを介さないでローカルファイルの読み書きが出来る。
これを使えばFlex4だけでローカルのファイルを読み込み、Flex4で処理して、処理結果をローカルファイルに保存することが出来る。

Windows上のローカルファイル(テキスト:漢字コードはshift-jis、改行コード"\r\n")を読み書きする。

ローカルファイル(テキスト)の読み込み

ローカルファイル(テキスト)の読み込みは以下の手順で行います。
 fncLocalFileReadSyori:読み込みボタン等で実行される関数
  クラスFileReferenceの作成
  ファイル開くダイアログ用のファイルの拡張子フィルタをセット
  ファイル開くダイアログを開く

 onFileSelected:ファイル開くダイアログでファイルが選択されたときの関数
  ファイルの読み込み完了時と読み込みエラー時のイベントに関数を指定
  ファイルの読み込み実行

 onFileLoaded:ファイルの読み込み完了時の関数
  漢字コードをshift-jisからUTF8に変更
  改行コードを"\r\n"から"\n"に変更
  e.target.nameで読み込みファイル名取得

 onFileLoadErr:ファイルの読み込みエラー時の関数
private var filRef:FileReference;
       :
//ローカルファイルの読み込み
private function fncLocalFileReadSyori():void {
    filRef = new FileReference();
    var FilterTxt:FileFilter = new FileFilter("テキスト(*.txt)", "*.txt");
    var FilterHtml:FileFilter = new FileFilter("HTML(*.html;*.htm)", 
                                      "*.html;*.htm");
    var FilterAll:FileFilter = new FileFilter("全て(*.*)", "*.*");
    filRef.browse([FilterTxt,FilterHtml,FilterAll]);
    filRef.addEventListener(Event.SELECT, onFileSelected);
}
private function onFileSelected(e:Event):void {
    filRef.addEventListener(Event.COMPLETE, onFileLoaded);
    filRef.addEventListener(IOErrorEvent.IO_ERROR, onFileLoadErr);
    filRef.load();
}
//読み込み完了
private function onFileLoaded(e:Event):void {
    var barrDat:ByteArray = e.target.data;
    //漢字コード変換(shift-jis -> UTF8)
    var strData:String = barrDat.readMultiByte(barrDat.length, "shift-jis");
    //改行の変更
    var arrDat:Array = strData.split("\r\n");
    strData = arrDat.join("\n");
    
    txtData.text=strData;
    strFileName = e.target.name;
    bolEditFlag = false;
    dispTitle();
}
//読み込みエラー
private function onFileLoadErr(e:IOErrorEvent):void {
    Alert.show("ローカルファイルへの読み込みを失敗しました。\n"+e.toString(),
               "LocalFile");
}

ローカルファイル(テキスト)への書き込み

ローカルファイル(テキスト)への書き込みは以下の手順で行います。
 fncLocalFileWrite:保存ボタン等で実行される関数
  改行コードを"\n"から"\r\n"に変更
  漢字コードをUTF8からshift-jisに変更
  クラスFileReferenceの作成
  ファイルの書き込み完了時と書き込みエラー時のイベントに関数を指定
  ファイル保存ダイアログを開きデータを保存

 onFileSave:ファイルの書き込み完了時の関数
  e.target.nameで読み込みファイル名取得

 onFileSaveErr:ファイルの書き込みエラー時の関数
//ローカルファイルへの保存----------------------------
private function fncLocalFileWrite():void {
    var strData:String =  txtData.text;
    //改行の変更
    var arrDat:Array = strData.split("\n");
    strData = arrDat.join("\r\n");
    //漢字コード変換(UTF8 -> shift-jis)
    var barrDat:ByteArray = new ByteArray();
    barrDat.writeMultiByte(strData, "shift-jis");
    filRef = new FileReference();
    filRef.addEventListener(Event.COMPLETE, onFileSave);
    filRef.addEventListener(IOErrorEvent.IO_ERROR, onFileSaveErr);
    filRef.save(barrDat,strFileName);
}
//保存完了
private function onFileSave(e:Event):void {
    strFileName = e.target.name;
    bolEditFlag = false;
    dispTitle();
    Alert.show("ローカルファイルへの保存しました。", "LocalFile");
}
//保存エラー
private function onFileSaveErr(e:IOErrorEvent):void {
    Alert.show("ローカルファイルへの保存を失敗しました。\n"+e.toString(),
                "LocalFile");
}

クリップボードへの書き込み

クリップボードへの書き込みの手順
 改行コードを"\n"から"\r\n"に変更します。
 System.setClipboard関数でクリップボードにセット

漢字コードの変更は不要ようです?、メモ帳等にペーストできました。
//クリップボードにコピー----------------------------------------
private function fncClipboardCopy():void {
    var strData:String =  txtData.text;
    //改行の変更
    var arrDat:Array = strData.split("\n");
    strData = arrDat.join("\r\n");
    try {
        System.setClipboard(strData);
    }
    catch(e:Error){
        Alert.show("クリップボードにコピーを失敗しました。\n"+e.toString(),
                          "LocalFile");
        return;
    }
    Alert.show("クリップボードにコピーしました。","LocalFile");
}

プログラミング工房