Aracılığıyla paylaş


Dosya ve klasörlere Access, WinUI 3 ve WinRT API'leri ile erişin.

WinUI uygulamaları, sıkça kullanılan dosya işlemleri için Windows Runtime (WinRT) API'lerini kullanarak dosya ve klasörlere erişebilir. Bu makalede dosya ve klasörleri access, sistem kitaplıklarını sorgulama, dosya özelliklerini alma ve Resimler ve Belgeler gibi konumlarla çalışma işlemleri gösterilmektedir.

Paketlenmiş WinUI uygulamaları oluştururken, belirli konumlardaki dosya ve klasörlere erişim sağlamak için WinRT API'leri kullanabilirsiniz. Bu API'ler uygulama ayarlarını okumanızı ve yazmanızı, dosya ve klasör seçicileri açmanızı ve Video ve Müzik kitaplıkları gibi korumalı konumlarla çalışmanızı sağlar. Ayrıca WinRT API'lerini Windows SDK'sından Win32 API'leri ve .NET SDK'sından API'ler ile birleştirebilirsiniz.

Bu makale WinRT storage API'lerine odaklanır ve şunların nasıl yapılacağını gösterir:

  • Sistem kitaplıklarındaki dosya ve klasörleri sorgulama
  • Boyut ve değişiklik tarihi gibi temel dosya özelliklerini alma
  • Resimler kitaplığındaki değişiklikleri izleme

Dosya ve klasörleri sorgulama

Aşağıdaki örnekte, dosya ve klasörler için Documents kitaplığını sorgulamak için StorageFolder ve StorageFile API'lerinin nasıl kullanılacağı gösterilmektedir. Örnek, GetFilesInFolderAsync yöntemini kullanarak klasör yapısında özyinelemeli olarak yineleme yapar ve dosya adlarını bir StringBuilder nesnesine ekler.

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

Temel dosya özelliklerini alma

Aşağıdaki örnek, önceki örnekteki GetFilesInFolderAsync yöntemini alır ve her dosya için değiştirilen dosya boyutunu ve tarihini alma özelliğini ekler. Örnek, BasicProperties API'sini kullanarak her dosya için değiştirilen dosya boyutunu ve tarihi alır, dosya boyutunu biçimlendirir ve değiştirilen boyutu ve tarihi her dosya ve klasör adından sonra StringBuilder nesnesine ekler.

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

Resimler Kütüphanesi ile Çalışma

Bu örnekte uygulama, Resimler kitaplığı güncelleştirildiğinde bildirim alacak şekilde yapılandırılmıştır. Örnek, StorageLibrary API'sini, Pictures kitaplığını almak için ve DefinitionChanged olayını, kitaplık güncellendiğinde bildirim almak için kullanır. Geçerli DefinitionChanged kitaplıktaki klasör listesi değiştiğinde olay tetiklenir. Örnek, Folders kitaplığındaki klasörleri dolaşmak için kitaplığın özelliğini kullanır ve klasör adını konsola yazar.

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.");
    }
}

Ayrıca bakınız

Windows App SDK ve .NET API'lerini kullanarak dosya ve klasörlere erişin

Windows App SDK ile Dosyalar, klasörler ve kitaplıklar