方法 : 分離ストレージでストアを列挙する
IsolatedStorageFile の静的メソッドである GetEnumerator を使用して、現在のユーザーに関するすべての分離ストアを列挙できます。 GetEnumerator は、IsolatedStorageScope の値を受け取り、IsolatedStorageFile 列挙子を返します。 IsolatedStorageScope の値としてサポートされているのは、User だけです。 ストアを列挙するには、IsolatedStorageContainment の値 AdministerIsolatedStorageByUser を指定する IsolatedStorageFilePermission が必要です。 IsolatedStorageScope の値 User を指定して GetEnumerator を呼び出すと、現在のユーザーに対して定義されている IsolatedStorageFiles の配列が返されます。
EnumeratingStores の例
ユーザーおよびアセンブリ別に分離されたストアを取得し、いくつかのファイルを作成するコード例を次に示します。 GetEnumerator メソッドが呼び出され、結果が IEnumerator に置かれます。 次に、IEnumerator 内を移動しながらファイルのサイズを集計し、結果をコンソールに報告します。 実際の列挙は、わかりやすいように、残りのコードとは別にファイルの末尾に記述されているプライベート EnumerateTheStore メソッドで実行されます。
Imports System
Imports System.IO
Imports System.IO.IsolatedStorage
Imports System.Collections
Public Class EnumeratingStores
Public Shared Sub Main()
' Get an isolated store for this assembly and put it into an
' IsolatedStorageFile object.
Dim isoStore As IsolatedStorageFile = _
IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
IsolatedStorageScope.Assembly, Nothing, Nothing)
' This code creates a few files so that they can be enumerated.
Dim streamA As New IsolatedStorageFileStream("TestFileA.Txt", FileMode.Create, isoStore)
Dim streamB As New IsolatedStorageFileStream("TestFileB.Txt", FileMode.Create, isoStore)
Dim streamC As New IsolatedStorageFileStream("TestFileC.Txt", FileMode.Create, isoStore)
Dim streamD As New IsolatedStorageFileStream("TestFileD.Txt", FileMode.Create, isoStore)
streamA.Close()
streamB.Close()
streamC.Close()
streamD.Close()
' There might be a small delay between when the above code
' executes and when the files are created in the store.
' Closing and opening the store in this example ensures that
' the common language runtime has finished creating the files.
isoStore .Close()
isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
IsolatedStorageScope.Assembly, Nothing, Nothing)
' This line of code calls a method at the bottom of the program
' that puts all the files in isoStore into an IEnumerator.
Dim allFiles As IEnumerator = EnumerateTheStore (isoStore)
Dim totalsize As Long = 0
' This code counts up the sizes of all the stores.
while(allFiles .MoveNext())
Dim store As IsolatedStorageFile
store = CType(allFiles.Current, IsolatedStorageFile)
totalsize += CType(store.UsedSize, Long)
End While
Console.WriteLine("The total size = " + totalsize)
End Sub
' This method returns an enumerator of all the files for a user.
Private Shared Function EnumerateTheStore(isoStore As IsolatedStorageFile) As IEnumerator
Dim e As IEnumerator = IsolatedStorageFile.GetEnumerator(IsolatedStorageScope.User)
Return e
End Function
End Class
using System;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections;
public class EnumeratingStores
{
public static int Main()
{
// Get an isolated store for this assembly and put it into an
// IsolatedStorageFile object.
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly, null, null);
// This code creates a few files so that they can be enumerated.
IsolatedStorageFileStream streamA = new IsolatedStorageFileStream("TestFileA.Txt", FileMode.Create, isoStore);
IsolatedStorageFileStream streamB = new IsolatedStorageFileStream("TestFileB.Txt", FileMode.Create, isoStore);
IsolatedStorageFileStream streamC = new IsolatedStorageFileStream("TestFileC.Txt", FileMode.Create, isoStore);
IsolatedStorageFileStream streamD = new IsolatedStorageFileStream("TestFileD.Txt", FileMode.Create, isoStore);
streamA.Close();
streamB.Close();
streamC.Close();
streamD.Close();
// There might be a small delay between when the above code
// executes and when the files are created in the store.
// Closing and opening the store in this example ensures that
// the common language runtime has finished creating the files.
isoStore .Close();
isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly, null, null);
// This line of code calls a method at the bottom of the program
// that puts all the files in isoStore into an IEnumerator.
IEnumerator allFiles = EnumerateTheStore (isoStore);
long totalsize = 0;
// This code counts up the sizes of all the stores.
while(allFiles .MoveNext())
{
IsolatedStorageFile store = (IsolatedStorageFile)allFiles.Current;
totalsize += (long)store.UsedSize;
}
Console.WriteLine("The total size = "+totalsize);
return 0;
}
// This method returns an enumerator of all the files for a user.
private static IEnumerator EnumerateTheStore(IsolatedStorageFile isoStore)
{
IEnumerator e = IsolatedStorageFile.GetEnumerator(IsolatedStorageScope.User);
return e;
}
}
using namespace System;
using namespace System::IO;
using namespace System::IO::IsolatedStorage;
using namespace System::Collections;
public ref class EnumeratingStores
{
public:
static int Main()
{
// Get an isolated store for this assembly and put it into an
// IsolatedStorageFile object.
IsolatedStorageFile^ isoStore = IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
IsolatedStorageScope::Assembly, (Type ^)nullptr, (Type ^)nullptr);
// This code creates a few files so that they can be enumerated.
IsolatedStorageFileStream^ streamA =
gcnew IsolatedStorageFileStream("TestFileA.Txt", FileMode::Create, isoStore);
IsolatedStorageFileStream^ streamB =
gcnew IsolatedStorageFileStream("TestFileB.Txt", FileMode::Create, isoStore);
IsolatedStorageFileStream^ streamC =
gcnew IsolatedStorageFileStream("TestFileC.Txt", FileMode::Create, isoStore);
IsolatedStorageFileStream^ streamD =
gcnew IsolatedStorageFileStream("TestFileD.Txt", FileMode::Create, isoStore);
streamA->Close();
streamB->Close();
streamC->Close();
streamD->Close();
// There might be a small delay between when the above code
// executes and when the files are created in the store.
// Closing and opening the store in this example ensures that
// the common language runtime has finished creating the files.
isoStore->Close();
isoStore = IsolatedStorageFile::GetStore(IsolatedStorageScope::User |
IsolatedStorageScope::Assembly, (Type ^)nullptr, (Type ^)nullptr);
// This line of code calls a method at the bottom of the program
// that puts all the files in isoStore into an IEnumerator.
IEnumerator^ allFiles = EnumerateTheStore(isoStore);
long totalsize = 0;
// This code counts up the sizes of all the stores.
while (allFiles->MoveNext())
{
IsolatedStorageFile^ store = (IsolatedStorageFile^)allFiles->Current;
totalsize += (long)store->UsedSize;
}
Console::WriteLine("The total size = " + totalsize);
return 0;
}
// This method returns an enumerator of all the files for a user.
private:
static IEnumerator^ EnumerateTheStore(IsolatedStorageFile^ isoStore)
{
IEnumerator^ e = IsolatedStorageFile::GetEnumerator(IsolatedStorageScope::User);
return e;
}
};
int main()
{
EnumeratingStores::Main();
}