Bagikan melalui


Mengakses file dan folder dengan API SDK Aplikasi Windows dan WinRT

Aplikasi SDK Aplikasi Windows yang dikemas dapat memanfaatkan API WinRT untuk membaca dan menulis pengaturan aplikasi, pemilih file dan folder, dan lokasi kotak pasir khusus seperti pustaka Video/Musik. Selain itu, aplikasi desktop paket apa pun dapat menggunakan API WinRT dan Win32 di Windows SDK, serta API yang disediakan di .NET SDK. Artikel ini menyediakan panduan tentang cara menggunakan API penyimpanan WinRT untuk mengkueri file dan folder, mengambil properti file, dan bekerja dengan pustaka Gambar .

File dan folder kueri

Contoh berikut menunjukkan cara menggunakan STORAGEFolder dan StorageFile API untuk mengkueri pustaka Dokumen untuk file dan folder. Contoh menggunakan GetFilesInFolderAsync metode untuk berulang melalui struktur folder dan menambahkan nama file ke StringBuilder objek.

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

Mendapatkan properti file dasar

Contoh berikut mengambil GetFilesInFolderAsync metode dari contoh sebelumnya dan menambahkan kemampuan untuk mengambil ukuran file dan tanggal yang dimodifikasi untuk setiap file. Contohnya menggunakan BASICProperties API untuk mengambil ukuran file dan tanggal yang dimodifikasi untuk setiap file, memformat ukuran file, dan menambahkan ukuran dan tanggal yang dimodifikasi ke StringBuilder objek setelah setiap nama file dan folder.

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

Bekerja dengan pustaka Gambar

Dalam contoh ini, aplikasi dikonfigurasi untuk menerima pemberitahuan saat pustaka Gambar diperbarui. Contohnya menggunakan StorageLibrary API untuk mengambil pustaka Gambar dan peristiwa DefinitionChanged untuk menerima pemberitahuan saat pustaka diperbarui. Kejadian DefinitionChanged ini dipanggil ketika daftar folder di pustaka saat ini berubah. Contoh menggunakan properti pustaka Folders untuk melakukan iterasi melalui folder di pustaka Gambar dan menulis nama folder ke konsol.

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

Baca juga

Mengakses file dan folder dengan API SDK Aplikasi Windows dan .NET

File, folder, dan pustaka dengan SDK Aplikasi Windows