Windows Phone のファイルとフォルダーを格納する方法
2012/11/15
対象: Windows Phone 8 | Windows Phone OS 7.1
このトピックでは、アプリで次の分離ストレージ タスクを実行する方法を示します。
アプリの仮想ストアの取得
親フォルダーの作成
分離ストレージ ファイルへのテキストの作成と追加
ストレージ ファイルに置かれたテキストの読み取り
目的は、テキストの文字列を入力し、それをファイルに書き込んで、テキスト ファイルの内容を読み取ることができる単一ページのアプリを作成することです。
注意
次の手順のステップは、Visual Studio 2010 Express for Windows Phone 用です。Visual Studio 2010 Professional または Visual Studio 2010 Ultimate 用のアドインを使用する場合、メニュー コマンドまたはウィンドウ レイアウトが多少異なる場合があります。
このトピックは、次のセクションで構成されています。
- 新しいプロジェクトの作成と分離ストレージ名前空間の追加
- デザイン サーフェイスの作成
- イベント ハンドラー コードの追加
新しいプロジェクトの作成と分離ストレージ名前空間の追加
初めに、新しいプロジェクトを作成し、必要な分離ストレージ名前空間を追加する必要があります。
新しいプロジェクトを作成して名前空間を追加するには
Visual Studio 2010 Express for Windows Phone で、[ファイル] メニューの [新しいプロジェクト] をクリックして新しいプロジェクトを作成します。
[新しいプロジェクト] ウィンドウが表示されます。[Visual C#] のテンプレートを展開し、[Windows Phone] のテンプレートを選択します。
[Windows Phone アプリ] テンプレートを選択します。[名前] に選択した名前を入力します。
[OK] をクリックします。Windows Phone のプラットフォームを選択するダイアログ ボックスが表示されます。
[Windows Phone の対象バージョン] メニューで、Windows Phone OS 7.1 が選択されていることを確認します。
[OK] をクリックします。新しいプロジェクトが作成され、Visual Studio のデザイナー ウィンドウに MainPage.xaml が表示されます。
MainPage.xaml のデザイナー ビューから、[ページ タイトル] を選択し、Text プロパティまたは XAML で直接、タイトルのテキストを files/folders に変更します。さらに、必要に応じて、アプリのタイトル名を変更することもできます。
分離コード ページに次のリソースを追加して、次の名前空間を追加します。たとえば、既定の名前付け規則のメイン ページを使用している場合は、MainPage.xaml.cs を更新します。
using System.IO; using System.IO.IsolatedStorage;
デザイン サーフェイスの作成
プロジェクトにコントロールを追加するには
MainPage.xaml で、[ツールボックス] から、TextBox コントロールと Button コントロールをドラッグし、ページの上部にコントロールを配置します。次の図を参考にして、コントロールをスケーリングして位置付けます。
TextBox の名前を txtWrite に変更し、Button の名前を btnWrite に変更します。
TextBox について、コントロールの Text プロパティから、テキスト TextBox を削除し、コンテンツ プロパティで、ボタン テキストを Write に変更します。
MainPage.xaml で、[ツールボックス] から、TextBlock コントロールと Button コントロールをドラッグし、ページの下部にコントロールを配置します。下の図を参考にして、コントロールをスケーリングして位置付けます。
TextBlock の名前を txtRead に変更し、Button の名前を btnRead に変更します。TextBlock については、コントロールの Text プロパティから、テキスト TextBlock を削除し、コンテンツ プロパティで、ボタンのテキストを Read に変更します。
イベント ハンドラー コードの追加
このセクションでは、btnWrite および btnRead クリック イベント ハンドラーにコードを追加して、アプリでフォルダー構造とファイルを作成し、テキストをファイルに読み書きできるようにします。
ボタン イベント ハンドラーにコードを追加するには
[btnWrite] ボタンをダブルクリックして、クリック イベントのイベント ハンドラーを追加します。MainPage.xaml.cs ファイルが開きます。
目的は、アプリケーションのファイルとフォルダーを作成できる仮想ストアを取得するコードを追加することです。簡単なファイルおよびフォルダー階層を強調するため、フォルダーを作成し、次にそのフォルダー内にテキスト ファイルを作成します。btnWrite_Click イベント ハンドラーに次のコードを追加します。
private void btnWrite_Click(object sender, RoutedEventArgs e) { // Obtain the virtual store for the application. IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication(); // Create a new folder and call it "MyFolder". myStore.CreateDirectory("MyFolder"); // Specify the file path and options. using (var isoFileStream = new IsolatedStorageFileStream("MyFolder\\myFile.txt", FileMode.OpenOrCreate, myStore)) { //Write the data using (var isoFileWriter = new StreamWriter(isoFileStream)) { isoFileWriter.WriteLine(txtWrite.Text); } } }
[btnRead] ボタンをダブルクリックして、クリック イベントのイベント ハンドラーを追加します。MainPage.xaml.cs ファイルが開きます。
btnRead_Click イベント ハンドラーに次のコードを追加します。
// This code opens and reads the contents of myFile.txt. private void btnRead_Click(object sender, RoutedEventArgs e) { // Obtain a virtual store for the application. IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication(); try { // Specify the file path and options. using (var isoFileStream = new IsolatedStorageFileStream("MyFolder\\myFile.txt", FileMode.Open, myStore)) { // Read the data. using (var isoFileReader = new StreamReader(isoFileStream)) { txtRead.Text = isoFileReader.ReadLine(); } } } catch { // Handle the case when the user attempts to click the Read button first. txtRead.Text = "Need to create directory and the file first."; } }
[デバッグ] メニューを選択し、[デバッグ開始] をクリックしてアプリを実行します。これによってエミュレーター ウィンドウが開き、アプリが起動します。
TextBox コントロールにテキストを入力できるはずです。[書き込み] をタップし、次に [読み取り] をタップして、内容を [TextBlock] コントロールに表示させます。繰り返しますが、これは、アプリの分離ストレージに領域を作成し、新しいファイルを作成して、そのファイルの内容を書き込み、読み取るプロセスを示しています。
デバイスでアプリを実行している場合、アプリを終了してから再起動します。[読み取り] ボタンを押すと、前回アプリを実行したときから書き込んだ最後の値が表示されます。