다음을 통해 공유


방법: 격리된 저장소의 저장소 열거

IsolatedStorageFile 정적 메서드 GetEnumerator를 사용하여 현재 사용자에 대한 모든 격리된 저장소를 열거할 수 있습니다. GetEnumeratorIsolatedStorageScope 값을 받아 IsolatedStorageFile 열거자를 반환합니다. IsolatedStorageScope 값 중 User만 지원됩니다. 저장소를 열거하려면 IsolatedStorageContainmentAdministerIsolatedStorageByUser를 지정하는 IsolatedStorageFilePermission을 사용해야 합니다. IsolatedStorageScopeUser를 사용하여 호출하면 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();
}

참고 항목

참조

IsolatedStorageFile

개념

격리된 저장소