SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight 4で作る新しいRIAアプリケーション

Silverlight 4における信頼されたアプリケーション

Silverlight 4で作る新しいRIAアプリケーション(9)

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード Source.zip (860.1 KB)

ローカルファイルシステムへのアクセス

 信頼されたアプリケーションでは、一部のユーザーフォルダーであれば、ユーザーとの対話なしにファイルの読み書きを行うことができるようになりました。

ファイルダイアログを利用したファイルへのアクセス

 通常、Silverlightで分離ストレージ以外のファイルにアクセスする場合は、SaveFileDialogクラスやOpenFileDialogクラスを利用して、ユーザーが選択したファイルのストリームに対してプログラミングを行う必要があります。

 リスト6 は、画面のボタンがクリックされたタイミングでファイルの保存ダイアログを表示し、ユーザーが選択したファイルにテキストボックスの内容を書き込んでいるサンプルです。

リスト6 FileSaveDialogクラスを利用したファイル保存のサンプル
private void SaveFromDialog(object sender, RoutedEventArgs e)
{
    var saveDialog = new SaveFileDialog()
    {
        DefaultExt = "txt",
        Filter = "テキストファイル(*.txt)|*.txt"
    };

    if (saveDialog.ShowDialog() == true)
    { 
        using (var stream = new StreamWriter(saveDialog.OpenFile()))
        {
            stream.Write(inputText.Text);
            stream.Close();
        }
        MessageBox.Show(string.Format("{0}に保存しました。", saveDialog.SafeFileName));
    }
}

 保存ボタンを押すと、図6のようなダイアログが表示され、ユーザーが選択したファイルにプログラムからアクセスできるようになります。ここではデスクトップのhote.txtというファイルに、テキストボックスの内容を保存しています。

図6 ファイル保存ダイアログによるファイルの保存
図6 ファイル保存ダイアログによるファイルの保存

信頼されたアプリケーションによるファイルの操作

 Silverlight4 では、System.IO名前空間の、FileクラスPathクラスと行ったおなじみのクラスを利用してローカルファイルシステムにアクセスできます。

 リスト8 にユーザーのドキュメントフォルダーにテキストボックスの内容を保存する例を示します。

リスト8 Fileクラスを利用したファイルの保存
var filePath = System.IO.Path.Combine(
		Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 
        "Hoge.txt");
if (File.Exists(filePath))
{
    File.Delete(filePath);
}
File.WriteAllText(filePath, inputText.Text, System.Text.Encoding.UTF8);

 ユーザーとの対話を行わない場合、信頼されたアプリケーションからは、EnvironmentクラスのGetFolderPathメソッドを利用することで、ユーザーのドキュメントフォルダ(MyDocuments)、ミュージックフォルダ(MyMusic)、ピクチャフォルダ、ビデオフォルダ(MyVideos)の4つのフォルダにアクセスできます。

 GetFolderPathメソッドに上記以外のフォルダを指定したり、WriteAllTextメソッドに直接C:\Demo\hoge.txtなどといったパスを指定した場合、SecurityExceptionの例外が発生するので注意してください。

 特に、SpecialFolder列挙体には、デスクトップ(Desktop)なども列挙されますが、アクセス可能なのはあくまで上記の4フォルダーだけです。

 これらのフォルダー以外にファイルを保存する場合は、依然としてリスト7のファイルダイアログを利用し、ユーザーとの対話を伴うファイルアクセスが必要となります。

まとめ

 今回は、Silverlight 4で追加されたブラウザー外実行の新機能のうち、ネイティブ統合以外の部分にフォーカスを当てて解説を行いました。信頼されたアプリケーションは、Silverlight 4の目玉といえる機能の1つです。

 特に、次回解説するネイティブ統合は飛び抜けた機能を提供しますが、多くの機能がユーザーとの対話することなく利用できるというのも、企業向けのアプリケーションを作成する上では必須の機能になるはずです。

 次回は、信頼されたアプリケーションのネイティブ統合と、証明証の発行や管理API、セキュリティといった部分に触れていきます。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Silverlight 4で作る新しいRIAアプリケーション連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト かるあ (杉山 洋一)(カルア(スギヤマ ヨウイチ))

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5785 2011/04/12 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング