Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Verwenden Sie die IsolatedStorageFile.GetDirectoryNames Methode, um nach einem Verzeichnis im isolierten Speicher zu suchen. Diese Methode verwendet eine Zeichenfolge, die ein Suchmuster darstellt. Sie können sowohl Einzelzeichen (?) als auch Platzhalterzeichen (*) im Suchmuster verwenden, aber die Platzhalterzeichen müssen im letzten Teil des Namens angezeigt werden. Zum Beispiel ist directory1/*ect*
eine gültige Suchzeichenfolge, aber *ect*/directory2
ist es nicht.
Verwenden Sie die IsolatedStorageFile.GetFileNames Methode, um nach einer Datei zu suchen. Die Einschränkung für Wildcard-Zeichen in Suchzeichenfolgen, die für GetDirectoryNames gilt, gilt auch für GetFileNames.
Keine dieser Methoden ist rekursiv; die IsolatedStorageFile Klasse stellt keine Methoden zum Auflisten aller Verzeichnisse oder Dateien in Ihrem Speicher bereit. Rekursive Methoden werden jedoch im folgenden Codebeispiel gezeigt.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie Dateien und Verzeichnisse in einem isolierten Speicher erstellt werden. Zunächst wird ein speicher, der für Benutzer, Domäne und Assembly isoliert ist, abgerufen und in der isoStore
Variablen platziert. Die CreateDirectory Methode wird verwendet, um einige verschiedene Verzeichnisse einzurichten, und der IsolatedStorageFileStream(String, FileMode, IsolatedStorageFile) Konstruktor erstellt einige Dateien in diesen Verzeichnissen. Der Code durchläuft dann die Ergebnisse der GetAllDirectories
Methode. Diese Methode verwendet GetDirectoryNames , um alle Verzeichnisnamen im aktuellen Verzeichnis zu finden. Diese Namen werden in einem Array gespeichert, und dann ruft sich GetAllDirectories
selbst auf und übergibt jedes gefundene Verzeichnis. Daher werden alle Verzeichnisnamen in einem Array zurückgegeben. Als Nächstes ruft der Code die GetAllFiles
Methode auf. Diese Methode ruft GetAllDirectories
auf, um die Namen aller Verzeichnisse zu ermitteln, und dann überprüft sie jedes Verzeichnis anhand der GetFileNames Methode auf Dateien. Das Ergebnis wird in einem Array für die Anzeige zurückgegeben.
using System;
using System.IO;
using System.IO.IsolatedStorage;
using System.Collections;
using System.Collections.Generic;
public class FindingExistingFilesAndDirectories
{
// Retrieves an array of all directories in the store, and
// displays the results.
public static void Main()
{
// This part of the code sets up a few directories and files in the
// store.
IsolatedStorageFile isoStore = IsolatedStorageFile.GetStore(IsolatedStorageScope.User |
IsolatedStorageScope.Assembly, null, null);
isoStore.CreateDirectory("TopLevelDirectory");
isoStore.CreateDirectory("TopLevelDirectory/SecondLevel");
isoStore.CreateDirectory("AnotherTopLevelDirectory/InsideDirectory");
isoStore.CreateFile("InTheRoot.txt");
isoStore.CreateFile("AnotherTopLevelDirectory/InsideDirectory/HereIAm.txt");
// End of setup.
Console.WriteLine('\r');
Console.WriteLine("Here is a list of all directories in this isolated store:");
foreach (string directory in GetAllDirectories("*", isoStore))
{
Console.WriteLine(directory);
}
Console.WriteLine('\r');
// Retrieve all the files in the directory by calling the GetFiles
// method.
Console.WriteLine("Here is a list of all the files in this isolated store:");
foreach (string file in GetAllFiles("*", isoStore)){
Console.WriteLine(file);
}
} // End of Main.
// Method to retrieve all directories, recursively, within a store.
public static List<String> GetAllDirectories(string pattern, IsolatedStorageFile storeFile)
{
// Get the root of the search string.
string root = Path.GetDirectoryName(pattern);
if (root != "")
{
root += "/";
}
// Retrieve directories.
List<String> directoryList = new List<String>(storeFile.GetDirectoryNames(pattern));
// Retrieve subdirectories of matches.
for (int i = 0, max = directoryList.Count; i < max; i++)
{
string directory = directoryList[i] + "/";
List<String> more = GetAllDirectories(root + directory + "*", storeFile);
// For each subdirectory found, add in the base path.
for (int j = 0; j < more.Count; j++)
{
more[j] = directory + more[j];
}
// Insert the subdirectories into the list and
// update the counter and upper bound.
directoryList.InsertRange(i + 1, more);
i += more.Count;
max += more.Count;
}
return directoryList;
}
public static List<String> GetAllFiles(string pattern, IsolatedStorageFile storeFile)
{
// Get the root and file portions of the search string.
string fileString = Path.GetFileName(pattern);
List<String> fileList = new List<String>(storeFile.GetFileNames(pattern));
// Loop through the subdirectories, collect matches,
// and make separators consistent.
foreach (string directory in GetAllDirectories("*", storeFile))
{
foreach (string file in storeFile.GetFileNames(directory + "/" + fileString))
{
fileList.Add((directory + "/" + file));
}
}
return fileList;
} // End of GetFiles.
}
Imports System.IO
Imports System.IO.IsolatedStorage
Imports System.Collections
Imports System.Collections.Generic
Public class FindingExistingFilesAndDirectories
' These arrayLists hold the directory and file names as they are found.
Private Shared directoryList As New List(Of String)
Private Shared fileList As New List(Of String)
' Retrieves an array of all directories in the store, and
' displays the results.
Public Shared Sub Main()
' This part of the code sets up a few directories and files in the store.
Dim isoStore As IsolatedStorageFile = IsolatedStorageFile.GetStore(IsolatedStorageScope.User Or _
IsolatedStorageScope.Assembly Or IsolatedStorageScope.Domain, Nothing, Nothing)
isoStore.CreateDirectory("TopLevelDirectory")
isoStore.CreateDirectory("TopLevelDirectory/SecondLevel")
isoStore.CreateDirectory("AnotherTopLevelDirectory/InsideDirectory")
isoStore.CreateFile("InTheRoot.txt")
isoStore.CreateFile("AnotherTopLevelDirectory/InsideDirectory/HereIAm.txt")
' End of setup.
Console.WriteLine()
Console.WriteLine("Here is a list of all directories in this isolated store:")
GetAllDirectories("*", isoStore)
For Each directory As String In directoryList
Console.WriteLine(directory)
Next
Console.WriteLine()
Console.WriteLine("Retrieve all the files in the directory by calling the GetFiles method.")
GetAllFiles(isoStore)
For Each file As String In fileList
Console.WriteLine(file)
Next
End Sub
Public Shared Sub GetAllDirectories(ByVal pattern As String, ByVal storeFile As IsolatedStorageFile)
' Retrieve directories.
Dim directories As String() = storeFile.GetDirectoryNames(pattern)
For Each directory As String In directories
' Add the directory to the final list.
directoryList.Add((pattern.TrimEnd(CChar("*"))) + directory + "/")
' Call the method again using directory.
GetAllDirectories((pattern.TrimEnd(CChar("*")) + directory + "/*"), storeFile)
Next
End Sub
Public Shared Sub GetAllFiles(ByVal storefile As IsolatedStorageFile)
' This adds the root to the directory list.
directoryList.Add("*")
For Each directory As String In directoryList
Dim files As String() = storefile.GetFileNames(directory + "*")
For Each dirfile As String In files
fileList.Add(dirfile)
Next
Next
End Sub
End Class