Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aplikasi WinUI dapat mengakses file dan folder menggunakan API Windows Runtime (WinRT) untuk operasi file umum. Artikel ini memperlihatkan kepada Anda cara mengakses file dan folder, pustaka sistem kueri, mengambil properti file, dan bekerja dengan lokasi seperti Gambar dan Dokumen.
Saat membuat aplikasi WinUI paket, Anda dapat menggunakan API WinRT untuk mengakses file dan folder di lokasi tertentu. API ini memungkinkan Anda membaca dan menulis pengaturan aplikasi, membuka pemilih file dan folder, dan bekerja dengan lokasi berkotak pasir seperti pustaka Video dan Musik. Anda juga dapat menggabungkan API WinRT dengan API Win32 dari Windows SDK dan API dari .NET SDK.
Artikel ini berfokus pada API penyimpanan WinRT dan menunjukkan cara:
- Mengkueri file dan folder di pustaka sistem
- Mengambil properti file dasar seperti ukuran dan tanggal modifikasi
- Memantau perubahan pada pustaka Gambar
Mengkueri file dan folder
Contoh berikut menunjukkan cara menggunakan API StorageFolder dan StorageFile 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 perpustakaan Gambar
Dalam contoh ini, aplikasi dikonfigurasi untuk menerima pemberitahuan saat pustaka Gambar diperbarui. Contohnya menggunakan API StorageLibrary 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 ini menggunakan properti Folders dari pustaka untuk melakukan iterasi melalui folder-folder di pustaka Pictures dan menuliskan 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.");
}
}
Lihat juga
Mengakses file dan folder dengan Windows App SDK dan .NET API
Windows developer