Exemplo n.º 1
0
        /// <summary>Returns a file if it is found in the specified storage strategy</summary>
        /// <param name="key">Path of the file in storage</param>
        /// <param name="location">Location storage strategy</param>
        /// <returns>StorageFile</returns>
        private static async Task <Windows.Storage.StorageFile> GetIfFileExistsAsync(string key,
                                                                                     StorageStrategies location = StorageStrategies.Local,
                                                                                     Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)
        {
            Windows.Storage.StorageFile retval;
            try
            {
                switch (location)
                {
                case StorageStrategies.Local:
                    retval = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(key);

                    break;

                case StorageStrategies.Roaming:
                    retval = await Windows.Storage.ApplicationData.Current.RoamingFolder.GetFileAsync(key);

                    break;

                case StorageStrategies.Temporary:
                    retval = await Windows.Storage.ApplicationData.Current.TemporaryFolder.GetFileAsync(key);

                    break;

                default:
                    throw new NotSupportedException(location.ToString());
                }
            }
            catch (System.IO.FileNotFoundException)
            {
                return(null);
            }

            return(retval);
        }
Exemplo n.º 2
0
        private static async Task <IRandomAccessStream> CreateFileIAStreamAsync(string key, StorageStrategies location         = StorageStrategies.Local,
                                                                                Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists, FileAccessMode fileAccessMode = FileAccessMode.ReadWrite)
        {
            var _File = await CreateFileAsync(key, location, Windows.Storage.CreationCollisionOption.ReplaceExisting);

            if (_File != null)
            {
                return(await _File.OpenAsync(fileAccessMode));
            }
            else
            {
                return(null);
            }
        }
Exemplo n.º 3
0
        /// <summary>Serializes an object and write to file in specified storage strategy</summary>
        /// <typeparam name="T">Specified type of object to serialize</typeparam>
        /// <param name="key">Path to the file in storage</param>
        /// <param name="value">Instance of object to be serialized and written</param>
        /// <param name="location">Location storage strategy</param>
        public async Task <bool> WriteFileAsync <T>(string key, T value, StorageStrategies location = StorageStrategies.Local,
                                                    Windows.Storage.CreationCollisionOption option  = Windows.Storage.CreationCollisionOption.ReplaceExisting)
        {
            // create file
            var file = await CreateFileAsync(key, location, option);

            // convert to string
            var serializedValue = Serialize(value);
            // save string to file
            await FileIO.WriteTextAsync(file, serializedValue);

            // result
            return(await FileExistsAsync(key, location));
        }
Exemplo n.º 4
0
 private static async Task <Windows.Storage.StorageFile> GetIfFileExistsAsync(string key, Windows.Storage.StorageFolder folder,
                                                                              Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.FailIfExists)
 {
     Windows.Storage.StorageFile retval;
     try
     {
         retval = await folder.GetFileAsync(key);
     }
     catch (System.IO.FileNotFoundException)
     {
         // System.Diagnostics.Debug.WriteLine("GetIfFileExistsAsync:FileNotFoundException");
         return(null);
     }
     return(retval);
 }
Exemplo n.º 5
0
        private static async Task <Windows.Storage.StorageFile> CreateFileAsync(string key, StorageStrategies location         = StorageStrategies.Local,
                                                                                Windows.Storage.CreationCollisionOption option = Windows.Storage.CreationCollisionOption.OpenIfExists)
        {
            switch (location)
            {
            case StorageStrategies.Local:
                return(await Windows.Storage.ApplicationData.Current.LocalFolder.CreateFileAsync(key, option));

            case StorageStrategies.Roaming:
                return(await Windows.Storage.ApplicationData.Current.RoamingFolder.CreateFileAsync(key, option));

            case StorageStrategies.Temporary:
                return(await Windows.Storage.ApplicationData.Current.TemporaryFolder.CreateFileAsync(key, option));

            default:
                throw new NotSupportedException(location.ToString());
            }
        }
Exemplo n.º 6
0
        public async Task <StorageFile> SaveToFile(WriteableBitmap image, string file_name, Windows.Storage.CreationCollisionOption collision, BitmapPixelFormat image_format, BitmapAlphaMode alpha_mode)
        {
            var file = await KnownFolders.PicturesLibrary.CreateFileAsync(file_name, collision);

            using (IRandomAccessStream image_stream = await file.OpenAsync(FileAccessMode.ReadWrite))
            {
                BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.BmpEncoderId, image_stream);

                Stream pixel_stream = image.PixelBuffer.AsStream();

                byte[] pixel_array = new byte[pixel_stream.Length];

                await pixel_stream.ReadAsync(pixel_array, 0, pixel_array.Length);

                encoder.SetPixelData(image_format, alpha_mode,
                                     (uint)image.PixelWidth,
                                     (uint)image.PixelHeight,
                                     96.0,
                                     96.0,
                                     pixel_array);
                await encoder.FlushAsync();
            }
            return(file);
        }