分離ストレージにテキストデータを保存する
|本エントリでは、アプリケーションからのデータ保存について紹介したいとおもいます。
WP7は、ファイルシステムが公開されておらず、
アプリケーションがデータを保存するには、分離ストレージを利用する必要があります。
分離ストレージとは、アプリケーション毎に使用できる仮想ストレージを持つ仕組みで、
分離ストレージ内は自由に使用することができます。
アプリケーションは他のアプリケーションの分離ストレージにアクセスすることはできません。
そのため、分離ストレージを使用すると他のアプリケーションからデータを保護することができ、
開発者はセキュリティに悩むことなく、アプリケーションデータをローカルに保存することができます。
本エントリでは、この分離ストレージをファイルシステムとして利用した
簡易メモアプリの作成方法を紹介します。
これまでに紹介した内容を利用していますので、以下を参考にどうぞ
- ・
- ・
TextBoxを使用して文字入力インターフェイスを作成する(WP7)
それでは続きをどうぞ。
分離ストレージを利用する
分離ストレージをファイルシステムとして使用するために、
以下表のIsolatedStorageFileクラスを利用します。
IsolatedStorageFileクラスのOpenFileメソッドの第二引数には、
ファイルの開き方、FileModeを指定する必要があります。
FileModeの一覧は以下表のとおりです。
※詳細なFileMode列挙体の解説は以下を参照ください
http://msdn.microsoft.com/ja-jp/library/system.io.filemode(v=VS.95).aspx
分離ストレージに書き込む
分離ストレージを利用するで紹介した、クラスとメソッドを利用し
分離ストレージにテキストデータを書き込みます。
書き込みの際は、常に新しく入力された情報を新規データとして扱いたい為
FileModeにはCreateを指定しています。(Line:9)
テキストデータのstreamへの書き込みには、
StreamWriterクラスのwriteメソッドを利用します。(Line:13)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // textデータを取得 string title = titleBox.Text; string text = textBox1.Text; // 分離ストレージを取得 IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForApplication(); // 分離ストレージからFileStreamを取得 IsolatedStorageFileStream stream = isoStorage.OpenFile(title, FileMode.Create); StreamWriter sw = new StreamWriter(stream, System.Text.Encoding.UTF8); // 書き込み sw.Write(text); // streamのclose sw.Close(); stream.Close(); |
それぞれのstreamのCloseを忘れないように気をつけましょう。
分離ストレージから読み出す
書き出し時と同様に、分離ストレージを利用するで紹介した、クラスとメソッドを利用して
分離ストレージからテキストファイルを読み込みます。
読み込み時には、既存ファイルのみを対象としたい為
FileModeにはOpenを指定しています。(Line:6)
FileModeにOpenを指定した場合、Fileが存在しないとIsolatedStorageExceptionが発生します。(Line:27)
本サンプルではExceptionの発生時に”File Not Found!!”を出力しています。(Line:29)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | // textデータを取得 string title = titleBox.Text; string line = null ; // 分離ストレージを取得 IsolatedStorageFile isoStorage = IsolatedStorageFile.GetUserStoreForApplication(); try { // 分離ストレージからFileStreamを取得 IsolatedStorageFileStream stream = isoStorage.OpenFile( "ファイル名" , FileMode.Open); StreamReader sr = new StreamReader(stream, System.Text.Encoding.UTF8); //textBoxの内容をクリア textBox1.Text = "" ; // 読み出し while ((line = sr.ReadLine()) != null ) { textBox1.Text = textBox1.Text + line; } sr.Close(); stream.Close(); } catch (IsolatedStorageException ie) { textBox1.Text = "file not found!!" ; } |
サンプルソースコード
本エントリのサンプルアプリは、以下の画面構成をとります。
1 2 3 4 5 6 7 8 9 10 11 12 | < Grid x:Name = "LayoutRoot" Background = "Transparent" > < TextBox Height = "73" HorizontalAlignment = "Left" Margin = "12,43,0,0" Name = "titleBox" Text = "Title" VerticalAlignment = "Top" Width = "233" /> < TextBox Height = "415" HorizontalAlignment = "Left" Margin = "12,105,0,0" Name = "textBox1" Text = "" VerticalAlignment = "Top" Width = "460" /> < Button Content = "Save" Height = "72" HorizontalAlignment = "Left" Margin = "338,44,0,0" Name = "save_button" VerticalAlignment = "Top" Width = "130" Click = "save_button_Click" /> < Button Content = "Show" Height = "72" HorizontalAlignment = "Left" Margin = "226,44,0,0" Name = "show_button" VerticalAlignment = "Top" Width = "130" Click = "show_button_Click" /> </ Grid > |
画面上部にTextBoxとButtonが二つ、下部にTextBoxが配置されています。
保存と読み出しの操作は以下のとおりです。
保存操作
1.上部のTextBoxにメモのタイトルを入力する
2.下部のTextBoxにメモの本文を入力する
3.saveボタンを押下する
読み出し操作
1.上部のTextBoxにメモのタイトルを入力する(保存済みのもの)
2.showボタンを押下する