Como: Enumerar armazenamentos para armazenamento isolado
Você pode enumerar todos os armazenamentos isolados para o usuário atual usando o método estático GetEnumerator do IsolatedStorageFile.GetEnumerator pega um valor IsolatedStorageScope e retorna um enumerador IsolatedStorageFile. User é único valor de IsolatedStorageScope suportado.Para enumerar os depósitos, você deve ter o IsolatedStorageFilePermission que especifica o valor do IsolatedStorageContainment AdministerIsolatedStorageByUser .Quando chamado com o valor User do IsolatedStorageScope , GetEnumerator retorna uma matriz de IsolatedStorageFiles que são definidos para o usuário atual.
Exemplo de EnumeratingStores
O exemplo de código a seguir obtém um depósito isolado por usuário e assembly e cria alguns arquivos.O método GetEnumerator é chamado e o resultado é colocado em um IEnumerator.O código, em seguida, percorre o IEnumerator somando os tamanhos dos arquivos e, então, informa o resultado para o console.A enumeração real ocorre no método privado EnumerateTheStore que é separado do restante do código, na parte inferior do arquivo, para fins de clareza do código.
Imports System
Imports System.IO
Imports System.IO.IsolatedStorage
Imports System.Collections
Public Module modmain
Sub Main()
' Get an isolated store for this assembly and put it into an
' IsolatedStorageFile object.
Dim isoStore As IsolatedStorageFile
isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain, Nothing, Nothing)
' This code creates a few files so that they can be enumerated.
Dim FileA As IsolatedStorageFileStream
FileA = New IsolatedStorageFileStream("TestFileA.Txt", FileMode.Create, isoStore)
Dim FileB As IsolatedStorageFileStream
FileB = New IsolatedStorageFileStream("TestFileB.Txt", FileMode.Create, isoStore)
Dim FileC As IsolatedStorageFileStream
FileC = New IsolatedStorageFileStream("TestFileC.Txt", FileMode.Create, isoStore)
Dim FileD As IsolatedStorageFileStream
FileD = New IsolatedStorageFileStream("TestFileD.Txt", FileMode.Create, isoStore)
FileA.Close()
FileB.Close()
FileC.Close()
FileD.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
allFiles = EnumerateTheStore(isoStore)
Dim totalSize As Long
' This code counts up the sizes of all the stores.
While (allFiles.MoveNext())
Dim store As IsolatedStorageFile
' Explicity convert the current object in allFiles
' into an IsolatedStorageFile.
store = CType(allFiles.Current, IsolatedStorageFile)
' Find the current size of the IsolatedStorageFile as
' an UInt64, and convert that to a string. Get the value
' of the string as a double and convert that to a Long.
totalSize += CLng(Val(store.CurrentSize.ToString))
End While
' Print out the value.
System.Console.WriteLine("The size of all the isolated stores in the user scope = " + totalSize.ToString)
End Sub
Function EnumerateTheStore(ByVal isoStore As IsolatedStorageFile) As IEnumerator
Return isoStore.GetEnumerator(IsolatedStorageScope.User)
End Function
End Module
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.CurrentSize;
}
Console.WriteLine("The total size = "+totalsize);
return 0;
}
// This method returns an IEnucontaining all the files for a user.
private static IEnumerator EnumerateTheStore(IsolatedStorageFile isoStore){
IEnumerator e = IsolatedStorageFile.GetEnumerator(IsolatedStorageScope.User);
return e;
}
}