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 mají přístup k souborům a složkám pomocí rozhraní API prostředí Windows Runtime (WinRT) pro běžné operace se soubory. V tomto článku se dozvíte, jak získat přístup k souborům a složkám, dotazovat se na systémové knihovny, načítat vlastnosti souborů a pracovat s umístěními, jako jsou obrázky a dokumenty.
Když vytváříte zabalené aplikace WinUI, můžete pomocí rozhraní API WinRT přistupovat 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 věnuje WinRT úložným API 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 StorageFolder a StorageFile API pro dotazování knihovny Documents na 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á BasicProperties API k načtení velikosti souboru a data změny pro každý soubor, formátování velikosti souboru, a následně připojení velikosti a data změny ke 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í knihovny Obrázků a události DefinitionChanged k příjmu 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í sady Windows App SDK a rozhraní .NET API
Windows developer