/// <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); }
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); } }
/// <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)); }
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); }
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()); } }
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); }