共用方式為


HOW TO:列舉隔離儲存區的存放區

更新:2007 年 11 月

您可以使用 IsolatedStorageFile 靜態方法 GetEnumerator,列舉目前使用者所有的隔離存放區。GetEnumerator 會取得 IsolatedStorageScope 值並傳回 IsolatedStorageFile 列舉值。User 是唯一支援的 IsolatedStorageScope 值。如果要列舉存放區,您必須具有將 IsolatedStorageContainment 值指定為 AdministerIsolatedStorageByUserIsolatedStorageFilePermission。當以 IsolatedStorageScopeUser 呼叫時,GetEnumerator 會傳回為目前使用者定義的 IsolatedStorageFiles 陣列。

EnumeratingStores 範例

下列程式碼範例取得使用者和組件所隔離的存放區,並建立一些檔案。會呼叫 GetEnumerator 方法,並將結果置於 IEnumerator 中。程式碼接著對 IEnumerator 進行迴圈,加總檔案的大小,並報告結果至主控台 (Console)。實際的列舉發生於私用的 EnumerateTheStore 方法 (從檔案底部的其餘程式碼中區分出來以作分別)。

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;
    }
}

請參閱

參考

IsolatedStorageFile

其他資源

執行隔離儲存區工作