Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aplikacje platformy uniwersalnej systemu Windows (UWP) mogą domyślnie uzyskiwać dostęp do określonych lokalizacji systemu plików. Aplikacje mogą również uzyskiwać dostęp do dodatkowych lokalizacji za pośrednictwem selektora plików lub deklarując możliwości.
Lokalizacje, do których mogą uzyskiwać dostęp aplikacje platformy UWP
Podczas tworzenia nowej aplikacji można domyślnie uzyskać dostęp do następujących lokalizacji systemu plików:
Katalog instalacji aplikacji
Folder, w którym aplikacja jest zainstalowana w systemie użytkownika.
Istnieją dwa podstawowe sposoby uzyskiwania dostępu do plików i folderów w katalogu instalacyjnym aplikacji:
Możesz pobrać StorageFolder, który reprezentuje katalog instalacyjny aplikacji, w następujący sposób:
Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;var installDirectory = Windows.ApplicationModel.Package.current.installedLocation;#include <winrt/Windows.Storage.h> ... Windows::Storage::StorageFolder installedLocation{ Windows::ApplicationModel::Package::Current().InstalledLocation() };Windows::Storage::StorageFolder^ installedLocation = Windows::ApplicationModel::Package::Current->InstalledLocation;Następnie można uzyskać dostęp do plików i folderów w katalogu przy użyciu metod StorageFolder. W tym przykładzie ten StorageFolder jest przechowywany w zmiennej
installDirectory. Aby dowiedzieć się więcej na temat pracy z pakietem aplikacji i katalogu instalacji, zobacz przykładowe informacje o pakiecie aplikacji w witrynie GitHub.Plik można pobrać bezpośrednio z katalogu instalacji aplikacji przy użyciu identyfikatora URI aplikacji, w następujący sposób:
using Windows.Storage; StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///file.txt"));Windows.Storage.StorageFile.getFileFromApplicationUriAsync("ms-appx:///file.txt").done( function(file) { // Process file } );Windows::Foundation::IAsyncAction ExampleCoroutineAsync() { Windows::Storage::StorageFile file{ co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{L"ms-appx:///file.txt"}) }; // Process file }auto getFileTask = create_task(StorageFile::GetFileFromApplicationUriAsync(ref new Uri("ms-appx:///file.txt"))); getFileTask.then([](StorageFile^ file) { // Process file });Po zakończeniu funkcji GetFileFromApplicationUriAsync zwraca ona StorageFile, który reprezentuje plik
file.txtw katalogu instalacyjnym aplikacji (filew przykładzie).Prefiks "ms-appx:///" w identyfikatorze URI odnosi się do katalogu instalacji aplikacji. Więcej informacji na temat używania identyfikatorów URI aplikacji można dowiedzieć się w How to use URIs to reference content.
Ponadto i w przeciwieństwie do innych lokalizacji można również uzyskiwać dostęp do plików w katalogu instalacji aplikacji przy użyciu niektórych Win32 i COM dla aplikacji platformy uniwersalnej systemu Windows (UWP) i niektórych funkcji biblioteki standardowej C/C++ z programu Microsoft Visual Studio.
Katalog instalacyjny aplikacji to lokalizacja tylko do odczytu. Nie można uzyskać dostępu do katalogu instalacji za pomocą selektora plików.
Uzyskiwanie dostępu do lokalizacji danych aplikacji
Foldery, w których aplikacja może przechowywać dane. Te foldery (lokalne, mobilne i tymczasowe) są tworzone podczas instalowania aplikacji.
Istnieją dwa podstawowe sposoby uzyskiwania dostępu do plików i folderów z lokalizacji danych aplikacji:
Użyj właściwości ApplicationData, aby pobrać folder danych aplikacji.
Na przykład można użyć ApplicationData.LocalFolder, aby pobrać StorageFolder, który reprezentuje lokalny folder aplikacji w taki sposób:
using Windows.Storage; StorageFolder localFolder = ApplicationData.Current.LocalFolder;var localFolder = Windows.Storage.ApplicationData.current.localFolder;Windows::Storage::StorageFolder storageFolder{ Windows::Storage::ApplicationData::Current().LocalFolder() };using namespace Windows::Storage; StorageFolder^ storageFolder = ApplicationData::Current->LocalFolder;Jeśli chcesz uzyskać dostęp do folderu roamingowego lub folderu tymczasowego aplikacji, zamiast tego użyj właściwości RoamingFolder lub TemporaryFolder.
Po pobraniu StorageFolder reprezentującej lokalizację danych aplikacji można uzyskać dostęp do plików i folderów w tej lokalizacji przy użyciu metod StorageFolder. W tym przykładzie te obiekty StorageFolder są przechowywane w zmiennej
localFolder. Możesz dowiedzieć się więcej na temat używania lokalizacji danych aplikacji, zapoznając się z wytycznymi na stronie klasy ApplicationData, a także pobierając przykładowe dane aplikacji z GitHub.Plik można pobrać bezpośrednio z folderu lokalnego aplikacji przy użyciu identyfikatora URI aplikacji, w następujący sposób:
using Windows.Storage; StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/file.txt"));Windows.Storage.StorageFile.getFileFromApplicationUriAsync("ms-appdata:///local/file.txt").done( function(file) { // Process file } );Windows::Storage::StorageFile file{ co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{ L"ms-appdata:///local/file.txt" }) }; // Process fileusing Windows::Storage; auto getFileTask = create_task(StorageFile::GetFileFromApplicationUriAsync(ref new Uri("ms-appdata:///local/file.txt"))); getFileTask.then([](StorageFile^ file) { // Process file });Po zakończeniu GetFileFromApplicationUriAsync zwraca StorageFile, który reprezentuje plik
file.txtw lokalnym folderze aplikacji (filew przykładzie).Prefiks "ms-appdata:///local/" w identyfikatorze URI odnosi się do folderu lokalnego aplikacji. Aby uzyskać dostęp do plików w folderach mobilnych lub tymczasowych aplikacji, zamiast tego użyj polecenia "ms-appdata:///roaming/" lub "ms-appdata:///temporary/". Więcej informacji na temat używania identyfikatorów URI aplikacji można uzyskać w Jak załadować zasoby plików.
Ponadto i w przeciwieństwie do innych lokalizacji można również uzyskiwać dostęp do plików w lokalizacjach danych aplikacji przy użyciu niektórych Win32 i COM dla aplikacji platformy UWP i niektórych funkcji biblioteki standardowej C/C++ z programu Visual Studio.
Nie można uzyskać dostępu do folderów lokalnych, mobilnych ani tymczasowych za pośrednictwem selektora plików.
Uzyskiwanie dostępu do urządzeń wymiennych
Ponadto aplikacja może domyślnie uzyskiwać dostęp do niektórych plików na połączonych urządzeniach. Jest to opcja, jeśli aplikacja używa rozszerzenia Autoodtwarzania do automatycznego uruchamiania, gdy użytkownicy podłączają urządzenie, takie jak aparat lub pendrive, do swojego systemu. Pliki, do których aplikacja może uzyskać dostęp, są ograniczone do określonych typów plików określonych za pomocą deklaracji skojarzenia typu pliku w manifeście aplikacji.
Oczywiście można również uzyskać dostęp do plików i folderów na urządzeniu wymiennym, wywołując selektor plików (przy użyciu FileOpenPicker i FolderPicker) i pozwalając użytkownikowi wybrać pliki i foldery, aby aplikacja mogła uzyskać dostęp. Dowiedz się, jak używać selektora plików w Otwórz pliki i foldery przy użyciu selektora.
Uwaga / Notatka
Aby uzyskać więcej informacji na temat uzyskiwania dostępu do karty SD lub innych urządzeń wymiennych, zobacz Access the SD card.
Folder pobierania użytkownika
Folder, w którym pobierane pliki są domyślnie zapisywane.
Domyślnie aplikacja może uzyskiwać dostęp tylko do plików i folderów w folderze Pobrane utworzonej przez aplikację użytkownika. Można jednak uzyskać dostęp do plików i folderów w folderze Pliki do pobrania użytkownika, wywołując selektor plików (FileOpenPicker lub FolderPicker), aby użytkownicy mogli nawigować i wybierać pliki lub foldery, aby aplikacja mogła uzyskać dostęp.
Plik można utworzyć w folderze Pobrane użytkownika w ten sposób:
using Windows.Storage; StorageFile newFile = await DownloadsFolder.CreateFileAsync("file.txt");Windows.Storage.DownloadsFolder.createFileAsync("file.txt").done( function(newFile) { // Process file } );Windows::Storage::StorageFile newFile{ co_await Windows::Storage::DownloadsFolder::CreateFileAsync(L"file.txt") }; // Process fileusing Windows::Storage; auto createFileTask = create_task(DownloadsFolder::CreateFileAsync(L"file.txt")); createFileTask.then([](StorageFile^ newFile) { // Process file });DownloadsFolder. CreateFileAsync jest przeciążony, dzięki czemu można określić, co system powinien zrobić, jeśli w folderze Pobrane znajduje się już istniejący plik o tej samej nazwie. Po zakończeniu tych metod zwracają StorageFile, który reprezentuje utworzony plik. Ten plik jest nazywany
newFilew przykładzie.Podfolder można utworzyć w folderze Pobrane użytkownika w następujący sposób:
using Windows.Storage; StorageFolder newFolder = await DownloadsFolder.CreateFolderAsync("New Folder");Windows.Storage.DownloadsFolder.createFolderAsync("New Folder").done( function(newFolder) { // Process folder } );Windows::Storage::StorageFolder newFolder{ co_await Windows::Storage::DownloadsFolder::CreateFolderAsync(L"New Folder") }; // Process folderusing Windows::Storage; auto createFolderTask = create_task(DownloadsFolder::CreateFolderAsync(L"New Folder")); createFolderTask.then([](StorageFolder^ newFolder) { // Process folder });DownloadsFolder. CreateFolderAsync jest przeciążona, dzięki czemu można określić, co system powinien zrobić, jeśli w folderze Pobrane znajduje się już istniejący podfolder o tej samej nazwie. Po zakończeniu tych metod zwracają StorageFolder, który reprezentuje utworzony podfolder. Ten plik jest nazywany
newFolderw przykładzie.
Uzyskiwanie dostępu do dodatkowych lokalizacji
Oprócz domyślnych lokalizacji aplikacja może uzyskiwać dostęp do dodatkowych plików i folderów przez deklarowanie możliwości w manifeście aplikacji lub przez wywoływanie selektora plików, aby umożliwić użytkownikowi pobieranie plików i folderów w celu uzyskania dostępu do aplikacji.
Aplikacje, które deklarują rozszerzenie AppExecutionAlias, mają uprawnienia systemu plików z katalogu, z którego są uruchamiane w oknie konsoli i w dół.
Zachowywanie dostępu do plików i folderów
Gdy aplikacja pobiera plik lub folder za pomocą selektora, aktywacji pliku, operacji przeciągania i upuszczania itp., ma dostęp tylko do tego pliku lub folderu do momentu zakończenia działania aplikacji. Jeśli chcesz automatycznie uzyskać dostęp do pliku lub folderu w przyszłości, możesz dodać go do FutureAccessList, aby aplikacja mogła łatwo uzyskać dostęp do tego elementu w przyszłości. Możesz również użyć MostRecentlyUsedList, aby łatwo zarządzać listą ostatnio używanych plików.
Możliwości uzyskiwania dostępu do innych lokalizacji
W poniższej tabeli wymieniono dodatkowe lokalizacje, do których można uzyskać dostęp, deklarując co najmniej jedną funkcję i korzystając ze skojarzonego interfejsu API Windows.Storage.
| Lokalizacja | Zdolność | Windows.Storage API |
|---|---|---|
| Wszystkie pliki, do których użytkownik ma dostęp. Na przykład: dokumenty, obrazy, zdjęcia, pliki do pobrania, pulpit, usługa OneDrive itp. |
broadFileSystemAccess Jest to ograniczona funkcja. Dostęp można skonfigurować w Ustawienia>Prywatność>system plików. Ponieważ użytkownicy mogą udzielać lub odrzucać uprawnienia w dowolnym momencie Ustawienia, należy zapewnić, że aplikacja będzie odporna na te zmiany. Jeśli okaże się, że aplikacja nie ma dostępu, możesz poprosić użytkownika o zmianę ustawienia, podając link do artykułu dostęp do systemu plików systemu Windows i prywatność . Należy pamiętać, że użytkownik musi zamknąć aplikację, przełączyć ustawienie i ponownie uruchomić aplikację. Jeśli przełączają ustawienie podczas działania aplikacji, platforma zawiesi aplikację, abyś mógł zapisać stan, a następnie wymusi zakończenie działania aplikacji, aby zastosować nowe ustawienie. W aktualizacji z kwietnia 2018 r. wartość domyślna dla uprawnienia to Włączone. W aktualizacji z października 2018 r. wartość domyślna to Wyłączone. Jeśli prześlesz aplikację do Sklepu, która deklaruje tę możliwość, musisz podać dodatkowe opisy powodów, dla których aplikacja potrzebuje tej możliwości i jak zamierza jej używać. Ta funkcja działa w przypadku interfejsów API w przestrzeni nazw Windows.Storage. Zobacz sekcję Przykład na końcu tego artykułu, aby zapoznać się z przykładem włączania tej funkcji w aplikacji. Uwaga: Ta funkcja nie jest obsługiwana na konsoli Xbox. |
N/a |
| Dokumenty |
dokumentyBiblioteka Uwaga: do manifestu aplikacji należy dodać skojarzenia typu pliku, które deklarują określone typy plików, do których aplikacja ma dostęp w tej lokalizacji. Użyj tej możliwości, jeśli aplikacja: — Ułatwia międzyplatformowy dostęp w trybie offline do określonej zawartości usługi OneDrive przy użyciu prawidłowych adresów URL usługi OneDrive lub identyfikatorów zasobów — Automatycznie zapisuje otwarte pliki w usłudze OneDrive użytkownika w trybie offline |
ZnaneFoldery.BibliotekaDokumentów |
| Muzyka |
bibliotekaMuzyczna Zobacz również Pliki i foldery w bibliotekach Muzyka, Obrazy i Wideo. |
KnownFolders.MusicLibrary |
| Zdjęcia |
bibliotekaObrazów Zobacz również Pliki i foldery w bibliotekach Muzyka, Obrazy i Wideo. |
KnownFolders.PicturesLibrary |
| Wideo |
bibliotekaWideo Zobacz również Pliki i foldery w bibliotekach Muzyka, Obrazy i Wideo. |
ZnaneFoldery.BibliotekaWideo |
| Urządzenia wymienne |
wymiennaPamięć Uwaga Do manifestu aplikacji należy dodać skojarzenia typu pliku, które deklarują określone typy plików, do których aplikacja ma dostęp w tej lokalizacji. Zobacz również Uzyskaj dostęp do karty SD. |
Znanefoldy.RemovableDevices |
| Biblioteki grup domowych | Wymagana jest co najmniej jedna z następujących funkcji. - biblioteka muzyczna - bibliotekaObrazów - biblioteka wideo |
KnownFolders.GrupaDomowa |
| Urządzenia serwera multimediów (DLNA) | Wymagana jest co najmniej jedna z następujących funkcji. - biblioteka muzyczna - bibliotekaObrazów - biblioteka wideo |
ZnaneFoldery.UrzadzeniaSerweraMultimedialnego |
| Foldery wykorzystujące Universal Naming Convention (UNC) | Wymagana jest kombinacja następujących możliwości. Możliwości sieci domowych i służbowych: - klientSerwerSieciPrywatnej Co najmniej jedna funkcja internetu i sieci publicznych: - KlientInternetowy - InternetClientServer A jeśli ma to zastosowanie, możliwości poświadczeń domeny: - uwierzytelnianie przedsiębiorstwa Uwaga: Musisz dodać skojarzenia typu pliku do manifestu aplikacji, które deklarują określone typy plików, do których aplikacja ma dostęp w tej lokalizacji. |
Pobierz folder przy użyciu: StorageFolder.GetFolderFromPathAsync Pobierz plik przy użyciu: StorageFile.GetFileFromPathAsync |
Przykład
W tym przykładzie dodano ograniczoną broadFileSystemAccess możliwości. Oprócz określenia możliwości, należy dodać przestrzeń nazw rescap, która jest również dodawana do IgnorableNamespaces.
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
Uwaga / Notatka
Aby uzyskać pełną listę możliwości aplikacji, zobacz Deklaracje możliwości aplikacji.