libro
www.tuyano.com
JavaScriptで作ろう! Windows 8 アプリ・プログラミング入門

ファイルアクセス (3/6)

作成:2012-12-10 07:56
更新:2012-12-10 07:56

■テキストファイルの書き出し

まずは、基本となるテキストファイルへの読み書きからです。これにはいろいろと覚えないといけないことがあります。

今回は「ドキュメントライブラリ」にあるファイルアクセスに限定して話を進めます。ファイルといっても、システムにあるファイルも「ドキュメント」フォルダのファイルもすべて同じように利用できるというわけではありません。

先に、マニフェストファイルで「ドキュメントライブラリ」の項目をONにしました。これにより、ドキュメントライブラリへのアクセスだけが許可されたのです。

既に述べたように、ドキュメントライブラリとは、ホームディレクトリ内にある「ドキュメント」フォルダのことです。

このドキュメントフォルダを利用するための機能は、Windows.Storage.KnownFoldersにある「documentsLibrary」というオブジェクトにまとめられています。ここにあるメソッドを使って、利用するファイルのオブジェクトを取得し、それを使って読み書きの作業を行います。ファイルアクセスは、このように「利用するファイルの取得」「そのファイルへのアクセス処理」という2つの段階で行います。

では、テキストファイルの書き出しから説明をしていきましょう。まずは、保存するファイルのオブジェクトを取得するために、Windows.Storage.KnownFolders.documentsLibraryの「createFileAsync」というメソッドを呼び出します。これは以下のような形になっています。
Windows.Storage.KnownFolders.documentsLibrary.
    createFileAsync( パス , 定数).then( 関数 );
なんだかややこしそうですね。引数には、読み込むファイル名(フォルダ内にあるならファイルのパス)と、ファイルアクセスに関する定数を指定します。これはファイルの上書きなどに関する指定となるもので、通常はWindows.Storage.CreationCollisionOption.replaceExistingというものを指定します。これは作成するファイルがあった場合にはそれを削除して新たにファイルを保存する、という指定です。

その後に、メソッドチェーンを使って「then」というメソッドが呼び出されていますね。これは、Fileオブジェクトの取得が完了したら実行する処理を指定するためのものです。引数には以下の様な形で定義された関数を用意します。
function (file) {……ファイルへの保存処理を用意する……}
引数にはFileオブジェクトが渡されます。これが、createFileAsyncで作成されたファイルのオブジェクトです。後は、この関数の中で、fileにテキストを書き出すための処理を用意すればいいわけですね。これは、Windows.Storage.FileIOというオブジェクトにある「writeTextAsync」を使います。
Windows.Storage.FileIO.writeTextAsync(【File】, 
    テキスト ).then( 関数 );
第1引数に書き出すFileオブジェクトを、第2引数に書き出すテキスト値をそれぞれ指定します。これで、そのファイルにテキストが保存されます。保存後の処理は、「then」を使って関数定義を用意しておくことで指定することができます。特にいらないなら、このthenは不要です。

では、簡単な利用例を下にあげておきましょう。id="text1"タグのtextContentを取得し、「created_by_sampleapp.txt」というファイルに保存するサンプルです。あらかじめid="text1"のタグと、処理実行用のボタンなどを用意しておき、Clickイベントなどで呼び出すようにして使ってください。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

 function btnSaveClick(mouseEvent) {
        var text1 = document.getElementById("text1");
        var save_str = text1.textContent;
        Windows.Storage.KnownFolders.documentsLibrary.createFileAsync(
            "created_by_sampleapp.txt",
            Windows.Storage.CreationCollisionOption.replaceExisting).then(
                function (file) {
                    Windows.Storage.FileIO.writeTextAsync(
                        file, save_str).then(function () {
                            new Windows.UI.Popups.MessageDialog("セーブしました。").showAsync();
                        });
                });
    }
※関連コンテンツ

「JavaScriptで作ろう! Windows 8 アプリ・プログラミング入門」に戻る