Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
WinUI-alkalmazások fájlokat és mappákat érhetnek el a Windows Runtime (WinRT) API-kon keresztül a gyakori fájlműveletekhez. Ez a cikk bemutatja, hogyan érheti el a fájlokat és mappákat, hogyan kérdezheti le a rendszertárakat, lekérdezheti a fájltulajdonságokat, és hogyan dolgozhat olyan helyekkel, mint a képek és dokumentumok.
Amikor csomagolt WinUI-alkalmazásokat készít, a WinRT API-kat használhatja a fájlok és mappák adott helyeken való elérésére. Ezek az API-k lehetővé teszik az alkalmazásbeállítások olvasását és írását, a fájl- és mappaválasztók megnyitását, valamint a védőfalas helyekkel, például a Video- és Zenetárakkal való munkát. A WinRT API-kat a Windows SDK-ból származó Win32 API-kkal és az .NET SDK API-ival is kombinálhatja.
Ez a cikk a WinRT storage API-kkal foglalkozik, és bemutatja, hogyan:
- Fájlok és mappák lekérdezése a rendszertárakban
- Alapvető fájltulajdonságok, például a méret és a módosítás dátuma lekérése
- A Képek tár módosításainak figyelése
Fájlok és mappák lekérdezése
Az alábbi példa bemutatja, hogyan használhatja a StorageFolder és StorageFile API-kat a fájlok és mappák Documents könyvtár lekérdezéséhez. A példa a GetFilesInFolderAsync metódussal rekurzívan végigvezeti a mappastruktúrát, és hozzáfűzi a fájlneveket egy StringBuilder objektumhoz.
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}");
}
}
}
Alapszintű fájltulajdonságok lekérése
Az alábbi példa az előző példából veszi a GetFilesInFolderAsync metódust, és lehetővé teszi az egyes fájlokhoz módosított fájlméret és dátum lekérését. A példa a BasicProperties API használatával kéri le az egyes fájlokhoz módosított fájlméretet és dátumot, formázza a fájlméretet, és hozzáfűzi a StringBuilder objektumhoz módosított méretet és dátumot az egyes fájlok és mappák neve után.
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}");
}
}
}
A Képek tár használata
Ebben a példában az alkalmazás úgy van konfigurálva, hogy értesítéseket kapjon a Képek tár frissítésekor. A példa a StorageLibrary API használatával kéri le a Pictures kódtárat és a DefinitionChanged eseményt, hogy értesítéseket kapjon a tár frissítésekor. Az DefinitionChanged esemény akkor lesz meghívva, ha az aktuális tár mappáinak listája megváltozik. A példa a tár tulajdonságát Folders használja a Képek tár mappáinak iterálásához, és a mappa nevét a konzolra írja.
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.");
}
}
Lásd még
Hozzáférés a fájlokhoz és mappákhoz a Windows App SDK és .NET API-k segítségével
Windows developer