Storage Files en Application Uri's

In Windows 8 apps kan je door middel van de StorageFile class werken met bestanden. Voor bestanden in de ApplicationData kan je ook ook gebruik maken van een application URI. Die uri ziet er als volgt uit:

ms-appdata:///local/<filename>. Dit is voor bestanden in de localfolder. Voor bestanden in de roaming folder ziet her uit als: ms-appdata:///roaming/<filename>

Via StorageFile.GetFromApplicationUri(); kan je vervolgens de storagefile ophalen. Dit kan heel handig zijn wanneer je filenames wil opslaan. Echter is er geen out of the box functionaliteit om van een storagefile naar een Uri te gaan. Deze extension method helpt je daarbij:

 

public static class StorageFileExtensions
    {
        public static Uri GetUri(this IStorageFile file)
        {
            return new Uri(string.Format("ms-appdata:///{0}", FindFilePath(file)));
        }

        private static string FindFilePath(IStorageFile file)
        {
            string pathLocalFolder = ApplicationData.Current.LocalFolder.Path;
            string pathRoamingFolder = ApplicationData.Current.RoamingFolder.Path;

            if (file.Path.StartsWith(pathLocalFolder))
            {
                return GeneratePath("local", file.Path, pathLocalFolder);
            }
            if (file.Path.StartsWith(pathRoamingFolder))
            {
                return GeneratePath("roaming", file.Path, pathLocalFolder);
            }
            throw new ArgumentException("file not compatible");
        }

        private static string GeneratePath(string type, string fullpath, string containerPath)
        {
            var path = fullpath.Substring(containerPath.Length);
            return string.Format("{0}{1}", type, path.Replace('\\', '/'));
        }
    }
  •   @tfsbuck thanks
  •   @densto @VSTS see email. one just timed out but that causing the other one that was waiting got picked up directly
  •   @VSTS did you send all your build agents already for weekend?
  •   @tfsbuck already made a issue https://t.co/u0EcaMewlV
  •   @tfsbuck back again :) you guys updated tf-cli today from .11 to .13 and now getting this error when try to publish… https://t.co/GLMVwL7HDZ
  •   @jpaternotte Soort zoekt soort! Past goed tussen de andere 149 clowns
  •   @sandeepchads @VSTS in the vsts sdk they are already visible; just returning 401
  •   RT @msbotframework: LUIS and the Azure Bot Service have just hit GA! 🎉 https://t.co/QVttVKrSWe
  •   @sandeepchads @VSTS Integration with my activity feed. Are the apis already open?
  •   @tfsbuck nice i had hard time to find the reproduction path. they also fixed my issue with publishing extension. new build task coming soon!