Bahasa
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.
Akses file dan folder di folder, pustaka, perangkat, atau lokasi jaringan. Anda juga dapat mengkueri file dan folder di lokasi dengan membuat kueri file dan folder.
Untuk panduan tentang cara menyimpan data aplikasi WinUI Anda, lihat kelas ApplicationData .
Nota
Untuk contoh lengkap, lihat Contoh enumerasi folder.
Prasyarat
Memahami pemrograman asinkron untuk aplikasi WinUI
Anda dapat mempelajari cara menulis aplikasi asinkron di C#, lihat Memanggil API asinkron di C# atau Visual Basic. Untuk mempelajari cara menulis aplikasi asinkron di C++/WinRT, lihat Operasi konkurensi dan asinkron dengan C++/WinRT.
Izin akses ke lokasi
Misalnya, kode dalam contoh ini memerlukan kemampuan picturesLibrary, tetapi lokasi Anda mungkin memerlukan kemampuan yang berbeda atau tidak ada kemampuan sama sekali. Untuk mempelajari selengkapnya, lihat Izin akses file.
Menghitung file dan folder di lokasi
Nota
Ingatlah untuk mendeklarasikan kemampuan picturesLibrary.
Dalam contoh ini, pertama-tama kita menggunakan metode StorageFolder.GetFilesAsync untuk mendapatkan semua file di folder akar KnownFolders.PicturesLibrary (bukan dalam subfolder) dan mencantumkan nama setiap file. Selanjutnya, kita menggunakan metode StorageFolder.GetFoldersAsync untuk mendapatkan semua subfolder di PicturesLibrary dan mencantumkan nama setiap subfolder.
StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
StringBuilder outputText = new StringBuilder();
IReadOnlyList<StorageFile> fileList = await picturesFolder.GetFilesAsync();
outputText.AppendLine("Files:");
foreach (StorageFile file in fileList)
{
outputText.Append(file.Name + "\n");
}
IReadOnlyList<StorageFolder> folderList = await picturesFolder.GetFoldersAsync();
outputText.AppendLine("Folders:");
foreach (StorageFolder folder in folderList)
{
outputText.Append(folder.DisplayName + "\n");
}
// MainPage.h
// In MainPage.xaml: <TextBlock x:Name="OutputTextBlock"/>
#include <winrt/Windows.Storage.h>
#include <sstream>
...
Windows::Foundation::IAsyncAction ExampleCoroutineAsync()
{
// Be sure to specify the Pictures Folder capability in your Package.appxmanifest.
Windows::Storage::StorageFolder picturesFolder{
Windows::Storage::KnownFolders::PicturesLibrary()
};
std::wstringstream outputString;
outputString << L"Files:" << std::endl;
for (auto const& file : co_await picturesFolder.GetFilesAsync())
{
outputString << file.Name().c_str() << std::endl;
}
outputString << L"Folders:" << std::endl;
for (auto const& folder : co_await picturesFolder.GetFoldersAsync())
{
outputString << folder.Name().c_str() << std::endl;
}
OutputTextBlock().Text(outputString.str().c_str());
}
Nota
Di C#, ingatlah untuk meletakkan kata kunci asinkron dalam deklarasi metode apa pun di mana Anda menggunakan operator tunggu.
Atau, Anda dapat menggunakan metode StorageFolder.GetItemsAsync untuk mendapatkan semua item (file dan subfolder) di lokasi tertentu. Contoh berikut menggunakan metode GetItemsAsync untuk mendapatkan semua file dan subfolder di folder akar KnownFolders.PicturesLibrary (bukan dalam subfolder). Kemudian contoh mencantumkan nama setiap file dan subfolder. Jika item adalah subfolder, contoh menambahkan "folder" ke nama.
StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
StringBuilder outputText = new StringBuilder();
IReadOnlyList<IStorageItem> itemsList = await picturesFolder.GetItemsAsync();
foreach (var item in itemsList)
{
if (item is StorageFolder)
{
outputText.Append(item.Name + " folder\n");
}
else
{
outputText.Append(item.Name + "\n");
}
}
// MainPage.h
// In MainPage.xaml: <TextBlock x:Name="OutputTextBlock"/>
#include <winrt/Windows.Storage.h>
#include <sstream>
...
Windows::Foundation::IAsyncAction ExampleCoroutineAsync()
{
// Be sure to specify the Pictures Folder capability in your Package.appxmanifest.
Windows::Storage::StorageFolder picturesFolder{
Windows::Storage::KnownFolders::PicturesLibrary()
};
std::wstringstream outputString;
for (Windows::Storage::IStorageItem const& item : co_await picturesFolder.GetItemsAsync())
{
outputString << item.Name().c_str();
if (item.IsOfType(Windows::Storage::StorageItemTypes::Folder))
{
outputString << L" folder" << std::endl;
}
else
{
outputString << std::endl;
}
OutputTextBlock().Text(outputString.str().c_str());
}
}
Memeriksa file di lokasi dan mendaftar file yang sesuai
Dalam contoh ini, kita melakukan kueri untuk semua file di KnownFolders.PicturesLibrary yang dikelompokkan menurut bulan, dan kali ini contoh ini secara rekursif masuk ke dalam subfolder. Pertama, kita memanggil StorageFolder.CreateFolderQuery dan meneruskan nilai CommonFolderQuery.GroupByMonth ke metode . Itu memberi kita objek StorageFolderQueryResult .
Selanjutnya kita memanggil StorageFolderQueryResult.GetFoldersAsync yang mengembalikan objek StorageFolder yang mewakili folder virtual. Dalam hal ini kita mengelompokkan menurut bulan, sehingga folder virtual masing-masing mewakili sekelompok file dengan bulan yang sama.
StorageFolder picturesFolder = KnownFolders.PicturesLibrary;
StorageFolderQueryResult queryResult =
picturesFolder.CreateFolderQuery(CommonFolderQuery.GroupByMonth);
IReadOnlyList<StorageFolder> folderList =
await queryResult.GetFoldersAsync();
StringBuilder outputText = new StringBuilder();
foreach (StorageFolder folder in folderList)
{
IReadOnlyList<StorageFile> fileList = await folder.GetFilesAsync();
// Print the month and number of files in this group.
outputText.AppendLine(folder.Name + " (" + fileList.Count + ")");
foreach (StorageFile file in fileList)
{
// Print the name of the file.
outputText.AppendLine(" " + file.Name);
}
}
// MainPage.h
// In MainPage.xaml: <TextBlock x:Name="OutputTextBlock"/>
#include <winrt/Windows.Storage.h>
#include <winrt/Windows.Storage.Search.h>
#include <sstream>
...
Windows::Foundation::IAsyncAction ExampleCoroutineAsync()
{
// Be sure to specify the Pictures Folder capability in your Package.appxmanifest.
Windows::Storage::StorageFolder picturesFolder{
Windows::Storage::KnownFolders::PicturesLibrary()
};
Windows::Storage::Search::StorageFolderQueryResult queryResult{
picturesFolder.CreateFolderQuery(Windows::Storage::Search::CommonFolderQuery::GroupByMonth)
};
std::wstringstream outputString;
for (Windows::Storage::StorageFolder const& folder : co_await queryResult.GetFoldersAsync())
{
auto files{ co_await folder.GetFilesAsync() };
outputString << folder.Name().c_str() << L" (" << files.Size() << L")" << std::endl;
for (Windows::Storage::StorageFile const& file : files)
{
outputString << L" " << file.Name().c_str() << std::endl;
}
}
OutputTextBlock().Text(outputString.str().c_str());
}
Output contoh terlihat mirip dengan sebagai berikut.
July 2015 (2)
MyImage3.png
MyImage4.png
December 2014 (2)
MyImage1.png
MyImage2.png
Windows developer