Procedura: enumerare gli archivi per lo spazio di memorizzazione isolato
È possibile enumerare tutti gli archivi isolati dell'utente corrente utilizzando il metodo statico GetEnumerator di IsolatedStorageFile. GetEnumerator accetta un valore IsolatedStorageScope e restituisce un enumeratore IsolatedStorageFile. User è l'unico valore IsolatedStorageScope supportato. Per enumerare gli archivi, è necessario disporre di un oggetto IsolatedStorageFilePermission che specifica il valore IsolatedStorageContainment AdministerIsolatedStorageByUser. Quando viene chiamato con il valore di IsolatedStorageScope User, GetEnumerator restituisce una matrice di IsolatedStorageFiles definiti per l'utente corrente.
Esempio di utilizzo di EnumeratingStores
Nell'esempio di codice che segue viene ottenuto un archivio isolato in base all'utente e all'assembly e vengono creati alcuni file. Viene chiamato il metodo GetEnumerator e il risultato viene inserito in un IEnumerator. Il codice quindi consente di scorrere IEnumerator, aggiungendo le dimensioni dei file, e di presentare il risultato alla console. L'enumerazione effettiva si svolge nel metodo privato EnumerateTheStore che, per chiarezza, compare nella parte finale del file, separato dal resto del codice.
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();
}