Silverlight では、[ファイルを開く] ダイアログ ボックスを使用する以外の方法で、オペレーティング システムのファイル システムに直接アクセスすることはできませんが、分離ストレージを使用すると、ユーザーのコンピューターにデータをローカルに格納できます。分離ストレージを使用するには、2 つの方法があります。1 つは、IsolatedStorageSettings クラスを使用して、キーと値のペアとしてデータを保存または取得する方法です。もう 1 つは、IsolatedStorageFile クラスを使用して、ファイルを保存または取得する方法です。このクイックスタートでは、両方のストレージ方法について説明します。
このクイックスタートは、次のセクションで構成されています。
分離ストレージの詳細については、MSDN の Silverlight ドキュメントの「分離ストレージ」を参照してください。
分離ストレージの例
次の例は、ユーザーのテーマを分離ストレージに保存する方法を示します。既定のテーマは "Blue Hills" です。このサンプルを実行するには、別のテーマを選択します。選択したテーマが分離ストレージに保存されます。このテーマは、このアプリケーションの実行時に常に表示されます。
この設定を破棄して分離ストレージからイメージ ファイルを削除するには、[Remove Isolated Storage Data] (分離ストレージ データを削除) をクリックします。[再読み込み] タブをクリックするかブラウザを更新すると、テーマが "Blue Hills" にリセットされます。
ユーザーの選択に応じて、イメージの名前とイメージ ファイル自体が分離ストレージに保存されます。イメージの名前は、userImage というキーを持つ userSettings という名前の設定に保存されます。イメージの名前は保存する必要はありませんが、便宜上保存しています。イメージ ファイルは Images という名前のディレクトリに保存され、UserImageFile.jpg という名前が付けられます。次の図は、分離ストレージに保存されるデータを示します。

この例で使用するリソースとして、3 つの .jpg イメージ ファイルがコンパイルされています。BlueHills.jpg イメージは既定のテーマとして設定されています。この例では、リソース ファイルのストリームを取得し、これを分離ストレージの UserImageFile.jpg に書き込んでいます。このファイルは、リスト ボックスから別のテーマが選択されるたびに上書きされます。
キーと値のペアの操作
キーと値のペアとしてデータを保存または取得するには、IsolatedStorageSettings クラスを使用します。IsolatedStorageSettings は、文字列やその他のオブジェクトを格納することができるディクショナリです。IsolatedStorageSettings で使用する一般的なメソッドを次に示します。
- Add: ディクショナリにキーと値のペアのエントリを追加します。
- Contains: 指定したキーがディクショナリに格納されているかどうかを確認します。
- Remove: 指定したキーを持つエントリを削除します。
指定したキーに関連付けられている値を取得または設定するには、Item プロパティを使用します。一般的な構文を次に示します。キーが存在しない場合は、新しいエントリがディクショナリに追加されます。
myCollection["myKey"] = myValue (C#) myCollection("myKey") = myValue (Visual Basic)
キーと値のペアを追加および削除するコードを次に示します。
C#
// Create an instance of IsolatedStorageSettings. private IsolatedStorageSettings userSettings = IsolatedStorageSettings.ApplicationSettings;
// Add a key and its value. userSettings.Add("userImage", "BlueHills.jpg");
// Remove the setting. userSettings.Remove("userImage");
Visual Basic
' Create an instance of IsolatedStorageSettings. Private userSettings As IsolatedStorageSettings = _ IsolatedStorageSettings.ApplicationSettings
' Add a key and its value. userSettings.Add("userImage", "BlueHills.jpg")
' Remove the setting. userSettings.Remove("userImage")
ファイルの操作
ファイルを保存または取得するには、IsolatedStorageFile クラスを使用します。IsolatedStorageFile は、ファイルとディレクトリを格納する分離ストレージ領域を表します。また、ファイルの読み取りと書き込みには、IsolatedStorageFileStream クラスもよく使用します。IsolatedStorageFile で使用する一般的なメソッドを次に示します。
分離ストレージではアンマネージ リソースが使用されるため、
IsolatedStorageFile クラスと
IsolatedStorageFileStream クラスのインスタンスは使用後に解放する必要があります。
using ステートメントはこれを自動的に実行するため、使用をお勧めします。次のコードは、
IsolatedStorageFile と
IsolatedStorageFileStreamの各メソッドの使用例です。
C#
// Obtain the isolated storage for an application. using (var store = IsolatedStorageFile.GetUserStoreForApplication()) { // Create a directory at the root of the store. if (!store.DirectoryExists("Images")) { store.CreateDirectory("Images"); }
// Get the stream of an existing file, // or create a file and get its stream.
using (var isoStream = store.OpenFile(@"Images\UserImageFile.jpg", FileMode.Open)) { IsolatedStorageFileStream isoStream = store.OpenFile( @"Images\UserImageFile.jpg", FileMode.OpenOrCreate);
...
// Write to the stream. isoStream.Write(bytes, 0, numBytesToRead); }
...
// Remove isolated storage. store.Remove(); }
Visual Basic
' Obtain the isolated storage for an application. Using store As IsolatedStorageFile = _ IsolatedStorageFile.GetUserStoreForApplication()
' Create a directory at the root of the store. If Not store.DirectoryExists("Images") = True Then store.CreateDirectory("Images") End If
' Get the stream of an existing file, ' or create a file and get its stream.
Using isoStream As IsolatedStorageFileStream = _ store.OpenFile("Images\UserImageFile.jpg", FileMode.OpenOrCreate)
...
' Write to the stream. isoStream.Write(bytes, 0, numbytesToRead)
End Using
...
' Remove isolated storage data. store.Remove() End Using
参照
フィードバックを送信する