Adobe AIR その3 テキストファイルの読込

ブラウザはセキュリティの問題でローカルファイルを読み込むことができなかった。
それが、AIRではできるということでやってみた。
戸惑った点がいくつかあったので、参考に書いてみる。
このサイトを参考にしました。
所詮シロートなので、間違いはご容赦_(__;)ゞ
(1)f.addEventListener(air.Event.SELECT,do_file_open);ってところが最初よくわからなかったが、ファイルを選択するダイアログを開いて、ファイルが選択してOKボタンをクリックしたら、do_file_openという関数を実行するということらしい。
(2)ダイアログが開いたとき、表示させるファイルの拡張子を設定できる。
var txt_ff = new air.FileFilter("テキスト","*.txt");
var csv_ff = new air.FileFilter("csv","*.csv");
と複数作って、
f.browseForOpen("どのファイルを開きますか?",[txt_ff,csv_ff]);
のように並べて記述する。配列なんだね。
(3)readUTFBytesをつかわずに、readMultiByteを使うと、文字コードがいろいろでも文字化けしないようです。(最後のsがあるのとないのがまぎらわしい)
(4)try{}catch{}でエラー処理も忘れずに。
できたソースはこんな感じです。
function data_open(){
var f = new air.File();
var fs = new air.FileStream();
var txt_ff = new air.FileFilter("テキスト","*.txt");
f.addEventListener(air.Event.SELECT,do_file_open);
f.browseForOpen("どのファイルを開きますか?",[txt_ff]);
function do_file_open(){
try
{
fs.open(f,air.FileMode.READ);
var inData = fs.readMultiByte(fs.bytesAvailable,air.File.systemCharset);
document.getElementById("DataArea").value = inData;
fs.close();
}catch(Error){
alert("ファイルが読み込めません。");
}
}
}
ソフトウエア | - | trackbacks (0)