Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Aplikace WinUI mají ve výchozím nastavení přístup k určitým umístěním systému souborů. Aplikace můžou také přistupovat k dalším umístěním prostřednictvím nástroje pro výběr souborů nebo deklarací možností.
Umístění, ke kterým mají aplikace WinUI přístup
Při vytváření nové aplikace můžete ve výchozím nastavení přistupovat k následujícím umístěním systému souborů:
Instalační adresář aplikace
Složka, ve které je aplikace nainstalovaná v systému uživatele.
Existují dva primární způsoby přístupu k souborům a složkám v instalačním adresáři vaší aplikace:
Můžete načíst StorageFolder, který představuje instalační adresář vaší aplikace, například takto:
Windows.Storage.StorageFolder installedLocation = Windows.ApplicationModel.Package.Current.InstalledLocation;#include <winrt/Windows.Storage.h> ... Windows::Storage::StorageFolder installedLocation{ Windows::ApplicationModel::Package::Current().InstalledLocation() };K souborům a složkám v adresáři pak můžete přistupovat pomocí metod StorageFolder . V tomto příkladu je tento StorageFolder uložen v
installDirectoryproměnné. Další informace o práci s balíčkem aplikace a instalaci adresáře najdete v ukázce informací o balíčku aplikace na GitHubu.Soubor můžete načíst přímo z instalačního adresáře aplikace pomocí identifikátoru URI aplikace, například takto:
using Windows.Storage; StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///file.txt"));Windows::Foundation::IAsyncAction ExampleCoroutineAsync() { Windows::Storage::StorageFile file{ co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{L"ms-appx:///file.txt"}) }; // Process file }Po dokončení getFileFromApplicationUriAsync vrátí StorageFile , který představuje
file.txtsoubor v instalačním adresáři aplikace (filev příkladu).Předpona ms-appx:///v identifikátoru URI odkazuje na instalační adresář aplikace. Další informace o používání identifikátorů URI aplikací najdete v tématu Použití identifikátorů URI k odkazování na obsah.
Kromě toho a na rozdíl od jiných umístění můžete také přistupovat k souborům v instalačním adresáři aplikace pomocí některých aplikací Win32 a COM pro aplikace WinUI a některých funkcí standardní knihovny C/C++ ze sady Microsoft Visual Studio.
Instalační adresář aplikace je umístění pouze ke čtení. Přístup k instalačnímu adresáři nemůžete získat prostřednictvím nástroje pro výběr souborů.
Přístup k umístěním dat aplikací
Složky, do kterých může aplikace ukládat data. Tyto složky (místní, roaming a dočasné) se vytvoří při instalaci vaší aplikace.
Existují dva primární způsoby přístupu k souborům a složkám z umístění dat vaší aplikace:
Pomocí vlastností ApplicationData načtěte složku dat aplikace.
Můžete například použít ApplicationData. LocalFolder pro načtení StorageFolderu , který představuje místní složku vaší aplikace, takto:
using Windows.Storage; StorageFolder localFolder = ApplicationData.Current.LocalFolder;Windows::Storage::StorageFolder storageFolder{ Windows::Storage::ApplicationData::Current().LocalFolder() };Pokud chcete získat přístup k roamingu nebo dočasné složce aplikace, použijte místo toho vlastnost RoamingFolder nebo TemporaryFolder .
Po načtení StorageFolder , který představuje umístění dat aplikace, můžete přistupovat k souborům a složkám v daném umístění pomocí metod StorageFolder. V tomto příkladu jsou tyto objekty StorageFolder uloženy v
localFolderproměnné. Další informace o používání umístění dat aplikací najdete v doprovodných materiálech na stránce třídy ApplicationData a stažením ukázky dat aplikace z GitHubu.Soubor můžete načíst přímo z místní složky aplikace pomocí identifikátoru URI aplikace, například takto:
using Windows.Storage; StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/file.txt"));Windows::Storage::StorageFile file{ co_await Windows::Storage::StorageFile::GetFileFromApplicationUriAsync(Windows::Foundation::Uri{ L"ms-appdata:///local/file.txt" }) }; // Process filePo dokončení getFileFromApplicationUriAsync vrátí StorageFile , který představuje
file.txtsoubor v místní složce aplikace (filev příkladu).Předpona "ms-appdata:///local/" v identifikátoru URI odkazuje na místní složku aplikace. Pokud chcete získat přístup k souborům v roamingu nebo dočasných složkách aplikace, použijte místo toho příkaz ms-appdata:///roaming/nebo ms-appdata:///temporary/. Další informace o používání identifikátorů URI aplikací najdete v tématu Jak načíst prostředky souborů.
Kromě toho a na rozdíl od jiných umístění můžete také přistupovat k souborům ve vašich umístěních dat aplikací pomocí některých funkcí pro aplikace WinUI z rozhraní Win32 a COM, stejně jako pomocí některých funkcí standardní knihovny C/C++ ve Visual Studiu.
Prostřednictvím nástroje pro výběr souborů nemůžete získat přístup k místním, roamingovým nebo dočasným složkám.
Přístup k vyměnitelným zařízením
Kromě toho může vaše aplikace ve výchozím nastavení přistupovat k některým souborům na připojených zařízeních. Toto je možnost, pokud vaše aplikace používá rozšíření Automatické přehrávání k automatickému spuštění, když uživatelé připojí zařízení, jako je fotoaparát nebo usb flash disk, k systému. Soubory, ke kterým má vaše aplikace přístup, jsou omezené na konkrétní typy souborů, které jsou zadané prostřednictvím deklarací přidružení typů souborů v manifestu aplikace.
Samozřejmě můžete také získat přístup k souborům a složkám na vyměnitelném zařízení voláním nástroje pro výběr souborů (pomocí FileOpenPickeru a FolderPickeru) a umožnit uživateli vybrat soubory a složky pro přístup k vaší aplikaci. Naučte se používat výběr souborů v okně Otevřít soubory a složky s nástrojem pro výběr.
Poznámka:
Další informace o přístupu k kartě SD nebo jiným vyměnitelným zařízením najdete v tématu Přístup k kartě SD.
Složka Stažené soubory uživatele
Složka, do které se stahované soubory ukládají ve výchozím nastavení.
Ve výchozím nastavení může vaše aplikace přistupovat jenom k souborům a složkám ve složce Stažené soubory uživatele, kterou vaše aplikace vytvořila. Přístup k souborům a složkám ve složce Stažené soubory uživatele ale můžete získat voláním nástroje pro výběr souborů (FileOpenPicker nebo FolderPicker), aby uživatelé mohli procházet a vybírat soubory nebo složky, ke kterým má vaše aplikace přístup.
Soubor můžete vytvořit ve složce Stažené soubory uživatele takto:
using Windows.Storage; StorageFile newFile = await DownloadsFolder.CreateFileAsync("file.txt");Windows::Storage::StorageFile newFile{ co_await Windows::Storage::DownloadsFolder::CreateFileAsync(L"file.txt") }; // Process fileDownloadsFolder. CreateFileAsync je přetížen, takže můžete určit, co má systém dělat, pokud již existuje existující soubor ve složce Stažené soubory se stejným názvem. Po dokončení těchto metod vrátí StorageFile , který představuje soubor, který byl vytvořen. Tento soubor se nazývá
newFilev příkladu.Podsložku můžete vytvořit ve složce Stažené soubory uživatele takto:
using Windows.Storage; StorageFolder newFolder = await DownloadsFolder.CreateFolderAsync("New Folder");Windows::Storage::StorageFolder newFolder{ co_await Windows::Storage::DownloadsFolder::CreateFolderAsync(L"New Folder") }; // Process folderDownloadsFolder. CreateFolderAsync je přetížen, takže můžete určit, co má systém dělat, pokud už existuje existující podsložka ve složce Stažené soubory se stejným názvem. Po dokončení těchto metod vrátí StorageFolder , který představuje podsložku, která byla vytvořena. Tento soubor je v příkladu nazván
newFolder.
Přístup k dalším umístěním
Kromě výchozích umístění může aplikace přistupovat k dalším souborům a složkám deklarováním možností v manifestu aplikace nebo zavoláním nástroje pro výběr souborů, aby uživateli umožnila vybrat soubory a složky k přístupu.
Aplikace, které deklarují příponu AppExecutionAlias , mají oprávnění systému souborů z adresáře, ze kterého se spouští v okně konzoly, a směrem dolů.
Zachování přístupu k souborům a složkám
Když vaše aplikace načte soubor nebo složku pomocí nástroje pro výběr, aktivaci souboru, operaci přetažení atd. má přístup k danému souboru nebo složce, dokud se aplikace neukončí. Pokud chcete v budoucnu automaticky získat přístup k souboru nebo složce, můžete ho přidat do seznamu FutureAccessList , aby vaše aplikace v budoucnu k této položce snadno přistupovala. Seznam naposledy použitých souborů můžete také snadno spravovat pomocí seznamu MostRecentlyUsedList .
Možnosti pro přístup k jiným umístěním
Následující tabulka uvádí další umístění, ke kterým můžete přistupovat deklarováním jedné nebo více funkcí a použitím přidruženého rozhraní WINDOWS.Storage API.
| Location | Schopnost | Windows.Storage API |
|---|---|---|
| Všechny soubory, ke kterým má uživatel přístup. Například: dokumenty, obrázky, fotky, soubory ke stažení, plocha, OneDrive atd. | broadFileSystemAccess Toto je omezená schopnost. Přístup je konfigurovatelný v nastavení > Ochrana osobních údajů >systému souborů. Vzhledem k tomu, že uživatelé můžou oprávnění kdykoli udělit nebo odepřít v Nastavení, měli byste zajistit, aby vaše aplikace byla odolná vůči těmto změnám. Pokud zjistíte, že vaše aplikace nemá přístup, můžete požádat uživatele, aby změnil nastavení zadáním odkazu na přístup k systému souborů Windows a článek o ochraně osobních údajů . Všimněte si, že uživatel musí aplikaci zavřít, přepnout nastavení a restartovat aplikaci. Pokud přepnou nastavení, když je aplikace spuštěná, platforma pozastaví vaši aplikaci, abyste mohli uložit stav, a pak vynuceně ukončete aplikaci, aby se použilo nové nastavení. V aktualizaci z dubna 2018 je výchozí hodnota oprávnění zapnutá. V aktualizaci z října 2018 je výchozí hodnota vypnutá. Pokud odešlete aplikaci do Storu, která tuto funkci deklaruje, budete muset zadat další popisy, proč vaše aplikace tuto funkci potřebuje a jak ji hodlá používat. Tato funkce funguje pro rozhraní API v rámci oboru názvů Windows.Storage. Příklad této funkce v aplikaci najdete v části Příklad na konci tohoto článku. Poznámka: Tato funkce není na Xboxu podporovaná. |
není k dispozici |
| Documents | Knihovna dokumentů Poznámka: Do manifestu aplikace musíte přidat přidružení typů souborů, které deklarují konkrétní typy souborů, ke kterým má aplikace přístup v tomto umístění. Tuto funkci použijte, pokud vaše aplikace: - Usnadňuje offline přístup ke konkrétnímu obsahu OneDrivu pro různé platformy pomocí platných adres URL nebo ID prostředků OneDrivu. - Ukládá otevřené soubory na OneDrive uživatele automaticky v offline režimu. |
KnownFolders.DocumentsLibrary |
| Hudba | hudební knihovna Viz také soubory a složky v knihovnách Hudba, Obrázky a Videa. |
KnownFolders.MusicLibrary |
| Pictures | knihovna obrázků Viz také soubory a složky v knihovnách Hudba, Obrázky a Videa. |
KnownFolders.KnihovnaObrázků |
| Videa | Knihovna videí Viz také soubory a složky v knihovnách Hudba, Obrázky a Videa. |
KnownFolders.VideosLibrary |
| Vyměnitelná zařízení | vyměnitelné úložiště Poznámka: Do manifestu aplikace musíte přidat přidružení typů souborů, které deklarují konkrétní typy souborů, ke kterým má aplikace přístup v tomto umístění. Viz také Přístup k kartě SD. |
KnownFolders.RemovableDevices |
| Knihovny domácí skupiny | Potřebujete alespoň jednu z následujících funkcí. - musicLibrary - knihovna obrázků - knihovna videí |
Známé složky.HomeGroup |
| Zařízení serveru médií (DLNA) | Potřebujete alespoň jednu z následujících funkcí. - musicLibrary - knihovna obrázků - knihovna videí |
KnownFolders.MediaServerDevices |
| Složky UNC (Universal Naming Convention) | Potřebujete kombinaci následujících funkcí. Funkce domácí a pracovní sítě: – privateNetworkClientServer A alespoň jedna funkce internetu a veřejných sítí: - internetClient - internetClientServer A pokud je to možné, funkce přihlašovacích údajů domény: – enterpriseAuthentication Poznámka: Do manifestu aplikace musíte přidat přidružení typů souborů, které deklarují konkrétní typy souborů, ke kterým má aplikace přístup v tomto umístění. |
Načtení složky pomocí: StorageFolder.GetFolderFromPathAsync Načtení souboru pomocí: StorageFile.GetFileFromPathAsync |
Příklad
Tento příklad přidá omezené oprávnění broadFileSystemAccess. Kromě specifikace schopnosti musí být přidán obor názvů rescap a také se přidává do IgnorableNamespaces.
<Package
...
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap mp rescap">
...
<Capabilities>
<rescap:Capability Name="broadFileSystemAccess" />
</Capabilities>
Poznámka:
Úplný seznam funkcí aplikace najdete v tématu Deklarace funkcí aplikace.
Windows developer