Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikace WinUI můžou přistupovat k souborům a složkám s využitím rozhraní API Windows Runtime (WinRT) pro běžné souborové operace. V tomto článku se dozvíte, jak přistupovat k souborům a složkám, dotazovat se na systémové knihovny, načíst vlastnosti souboru a pracovat s umístěními, jako je složka Obrázky a Dokumenty.
Při sestavování zabalených aplikací WinUI můžete rozhraní API WinRT použít ke přístupu k souborům a složkám v konkrétních umístěních. Tato rozhraní API umožňují číst a zapisovat nastavení aplikace, otevírat nástroje pro výběr souborů a složek a pracovat s umístěními v izolovaném prostoru (sandbox), jako jsou knihovny videa a hudby. Rozhraní API WinRT můžete také kombinovat s rozhraními API Win32 ze sady Windows SDK a rozhraní API ze sady .NET SDK.
Tento článek se zaměřuje na rozhraní API Win storage RT a ukazuje, jak:
- Dotazování souborů a složek v systémových knihovnách
- Načtení základních vlastností souboru, jako je velikost a datum změny
- Monitorujte změny v knihovně Obrázky
Dotazování souborů a složek
Následující příklad ukazuje, jak použít rozhraní API StorageFolder a StorageFile k dotazování knihovny Documents pro soubory a složky. V příkladu je použita metoda GetFilesInFolderAsync k rekurzivnímu procházení strukturou složek a připojování názvů souborů k objektu StringBuilder.
using System.Text;
using Windows.Storage;
...
private async Task<string> GetDocumentsContentsAsync()
{
StorageFolder docsFolder = KnownFolders.DocumentsLibrary;
StringBuilder outputBuilder = new();
await GetFilesInFolderAsync(docsFolder, outputBuilder);
return outputBuilder.ToString();
}
private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();
foreach (var item in storageItem)
{
if (item is StorageFolder)
{
await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
}
else
{
outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");
}
}
}
Získání základních vlastností souboru
Následující příklad přebírá metodu GetFilesInFolderAsync z předchozího příkladu a přidává možnost načíst velikost souboru a datum změny pro každý soubor. Příklad používá rozhraní API BasicProperties k načtení velikosti souboru a data změny pro každý soubor, naformátuje velikost souboru a datum změny do objektu StringBuilder za každý název souboru a složky.
using System.Text;
using Windows.Storage;
using Windows.Storage.FileProperties;
...
private async Task GetFilesInFolderAsync(StorageFolder folder, StringBuilder outputBuilder)
{
IReadOnlyList<IStorageItem> storageItem = await folder.GetItemsAsync();
foreach (var item in storageItem)
{
if (item is StorageFolder)
{
await GetFilesInFolderAsync(item as StorageFolder, outputBuilder);
}
else
{
outputBuilder.AppendLine($"Found {item.Name} in folder {folder.Name}");
// Append each file's size and date modified.
BasicProperties basicProperties = await item.GetBasicPropertiesAsync();
string fileSize = string.Format("{0:n0}", basicProperties.Size);
outputBuilder.AppendLine($" - File size: {fileSize} bytes");
outputBuilder.AppendLine($" - Date modified: {basicProperties.DateModified}");
}
}
}
Práce s knihovnou Obrázky
V tomto příkladu je aplikace nakonfigurovaná tak, aby dostávala oznámení při aktualizaci knihovny Obrázky . Příklad používá rozhraní API StorageLibrary k načtení události Pictures a DefinitionChanged pro příjem oznámení při aktualizaci knihovny. Událost DefinitionChanged se vyvolá, když se změní seznam složek v aktuální knihovně. Příklad používá vlastnost knihovny Folders k iteraci mezi složkami v knihovně Obrázky a zapíše název složky do konzoly.
using Windows.Storage;
...
private async Task Configure()
{
StorageLibrary picturesFolder = await StorageLibrary.GetLibraryAsync(KnownLibraryId.Pictures);
picturesFolder.DefinitionChanged += picturesFolder_DefinitionChanged;
}
private void picturesFolder_DefinitionChanged(StorageLibrary sender, object args)
{
foreach (StorageFolder item in sender.Folders)
{
Console.WriteLine($"Folder {item.Name} found.");
}
}
Viz také
Přístup k souborům a složkám pomocí Windows App SDK a .NET API
Windows developer