Jak “vykutat” Stream ze StorageFile v UWP

Přístup k souborovému systému v UWP je z důvodu bezpečnosti omezený. Ani s deklarovanou broadFileSystemAccess capability nemohou obecně API mimo Windows.Storage přistupovat k souborům přes jejich cestu. Naštěstí většina knihoven nabízí přetížené varianty metod s parametrem System.IO.Stream, pomocí kterých se lze problému snadno vyhnout. Ale jak dostat Stream z našeho StorageFile? To stále úspěšně zapomínám, takže doufám, že mi to tento článek pomůže zapamatovat 😀 .

Konverzní metody přímo na StorageFile nenajdeme. Jsou však dostupné jako extension metody v typu WindowsRuntimeStorageExtensions, který najdeme v namespace System.IO. Nejprve tedy musíme do našeho C# souboru přidat direktivu using:

A teď už můžeme volat metodu OpenStreamForReadAsync na našem StorageFile, abychom dostali Stream pro čtení:

Nebo volat metodu OpenStreamForWriteAsync abychom dostali Stream pro zápis:

Dokonce existují přetížené verze metod, které vrací Stream pro soubor uvnitř konkrétní složky, pomocí instance StorageFolder:

Nakonec, pokud chceme jít o úroveň níže, můžeme zavolat metodu CreateSafeFileHandle, která vrací Microsoft.Win32.SafeHandles.SafeFileHandle. Ten můžeme použít například s FileStream API:

Windows Logo

Buy me a coffeeBuy me a coffee

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.