示例#1
0
        public async Task <List <string> > GetAllFilesListAsync(StorageTargetType storageTargetType = StorageTargetType.Local, string targetPath = null)
        {
            var targetFolder = await getStorageFolderAsync(storageTargetType, targetPath);

            var queryOptions = new QueryOptions(CommonFileQuery.DefaultQuery, new[] { "*" });

            queryOptions.FolderDepth = FolderDepth.Deep;
            var availableCachFiles = targetFolder.CreateFileQueryWithOptions(queryOptions);
            var files = await availableCachFiles.GetFilesAsync();

            return(files.Select(storageFile => storageFile.Name).ToList());
        }
示例#2
0
        public async Task <bool> FileExistsAsync(string filename, StorageTargetType targetType, string targetPath = null)
        {
            try
            {
                var folder = await getStorageFolderAsync(targetType, targetPath);

                return(File.Exists(Path.Combine(folder.Path, filename)));
            }
            catch (FileNotFoundException)
            {
                return(false);
            }
            catch (Exception)
            {
                return(false);
            }
        }
示例#3
0
        public async Task <bool> DeleteFromStorageAsync(string fileName, StorageTargetType storageTargetType = StorageTargetType.Local, string targetPath = null)
        {
            try
            {
                var targetFolder = await getStorageFolderAsync(storageTargetType, targetPath);

                var file = await targetFolder.GetFileAsync(fileName);

                await file.DeleteAsync();

                return(true);
            }
            catch
            {
                Debug.WriteLine("LocalStorageService.cs | DeleteFromStorageAsync | Could not delete file: {0}", fileName);
                return(false);
            }
        }
示例#4
0
        public async Task <string> ReadStringFromStorageAsync(string fileName, StorageTargetType storageTargetType = StorageTargetType.Local, string targetPath = null)
        {
            try
            {
                var targetFolder = await getStorageFolderAsync(storageTargetType, targetPath);

                var file = await targetFolder.GetFileAsync(fileName).AsTask().ConfigureAwait(false);

                if (file != null)
                {
                    var data = await FileIO.ReadTextAsync(file).AsTask().ConfigureAwait(false);

                    return(data);
                }
            }
            catch
            {
                Debug.WriteLine("LocalStorageService.cs | ReadStringFromStorageAsync | Error reading file {0}", fileName);
            }

            return(null);
        }
示例#5
0
        private async Task <StorageFolder> getStorageFolderAsync(StorageTargetType targetType, string targetPath)
        {
            var targetFolder = ApplicationData.Current.LocalFolder;

            try
            {
                switch (targetType)
                {
                case StorageTargetType.Roaming:
                    targetFolder = ApplicationData.Current.RoamingFolder;
                    break;

                case StorageTargetType.Temp:
                    targetFolder = ApplicationData.Current.TemporaryFolder;
                    break;
                }

                if (targetPath.IsNeitherNullNorEmpty())
                {
                    var splittedPath = targetPath.Split(new[] { '/', '\\' }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (var folderName in splittedPath)
                    {
                        targetFolder = await targetFolder.CreateFolderAsync(folderName, CreationCollisionOption.OpenIfExists);
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine("LocalStorageService.cs | getStorageFolderAsync | Error getting / creating folder in {0} for path {1}", targetType, targetPath);
                // as the PathTooLongException is not public...
                if (ex.HResult == -2147024690)
                {
                    Debug.WriteLine("LocalStorageService.cs | getStorageFolderAsync | Path was to long");
                }
                throw;
            }

            return(targetFolder);
        }
示例#6
0
        public async Task <Stream> ReadStreamFromStorageAsync(string fileName, StorageTargetType storageTargetType = StorageTargetType.Local, string targetPath = null)
        {
            try
            {
                var targetFolder = await getStorageFolderAsync(storageTargetType, targetPath);

                var file = await targetFolder.GetFileAsync(fileName).AsTask().ConfigureAwait(false);

                if (file != null)
                {
                    var randomAccessStream = await file.OpenAsync(FileAccessMode.ReadWrite);

                    return(randomAccessStream.AsStream());
                }
            }
            catch
            {
                Debug.WriteLine("LocalStorageService.cs | ReadStringFromStorageAsync | Error reading file {0}", fileName);
            }

            return(null);
        }
示例#7
0
        public async Task <byte[]> ReadBytesFromStorageAsync(string fileName, StorageTargetType storageTargetType = StorageTargetType.Local, string targetPath = null)
        {
            try
            {
                var targetFolder = await getStorageFolderAsync(storageTargetType, targetPath);

                var file = await targetFolder.GetFileAsync(fileName);

                byte[] data;
                using (var s = await file.OpenStreamForReadAsync())
                {
                    data = new byte[s.Length];
                    await s.ReadAsync(data, 0, (int)s.Length);
                }

                return(data);
            }
            catch
            {
                Debug.WriteLine("LocalStorageService.cs | ReadBytesFromStorageAsync | Error reading file {0}", fileName);
            }
            return(null);
        }
示例#8
0
        public async Task <bool> WriteStreamToStorageAsync(string fileName, Stream streamToWrite, StorageTargetType storageTargetType = StorageTargetType.Local, string targetPath = null)
        {
            try
            {
                var targetFolder = await getStorageFolderAsync(storageTargetType, targetPath);

                var file = await targetFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

                using (var outStream = await file.OpenStreamForWriteAsync())
                {
                    await streamToWrite.CopyToAsync(outStream);

                    await outStream.FlushAsync();
                }
                return(true);
            }
            catch
            {
                Debug.WriteLine("LocalStorageService.cs | WriteStreamToStorageAsync | Error saving {0} to storage", fileName);
                return(false);
            }
        }
示例#9
0
        public async Task <bool> WriteStringToStorageAsync(string fileName, string stringToWrite, StorageTargetType storageTargetType = StorageTargetType.Local, string targetPath = null)
        {
            try
            {
                var targetFolder = await getStorageFolderAsync(storageTargetType, targetPath);

                var file = await targetFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

                await FileIO.WriteTextAsync(file, stringToWrite);

                return(true);
            }
            catch
            {
                Debug.WriteLine("LocalStorageService.cs | WriteStringToStorageAsync | Error saving {0} to storage", fileName);
                return(false);
            }
        }
示例#10
0
        public async Task <IPortableStorageFile> CreateOrOpenFileAsync(string fileName, StorageTargetType storageTargetType, string optionalFileContent = null, string targetPath = null)
        {
            var targetFolder = await getStorageFolderAsync(storageTargetType, targetPath);

            var file = await targetFolder.CreateFileAsync(fileName, CreationCollisionOption.OpenIfExists);

            if (optionalFileContent.IsNeitherNullNorEmpty())
            {
                await FileIO.WriteTextAsync(file, optionalFileContent);
            }
            return(file.AsPortableStorageFile());
        }
示例#11
0
        public async Task <List <IPortableStorageFile> > GetFilesListSortByDateAsync(string query, StorageTargetType storageTargetType = StorageTargetType.Local, string targetPath = null, bool deep = false)
        {
            var targetFolder = await getStorageFolderAsync(storageTargetType, targetPath);

            var queryOptions = new QueryOptions(CommonFileQuery.DefaultQuery, new[] { query });

            queryOptions.SortOrder.Add(new SortEntry()
            {
                PropertyName = "System.DateModified"
            });
            if (deep)
            {
                queryOptions.FolderDepth = FolderDepth.Deep;
            }
            var availableCachFiles = targetFolder.CreateFileQueryWithOptions(queryOptions);
            var files = await availableCachFiles.GetFilesAsync();

            return(files.Select(storageFile => storageFile.AsPortableStorageFile()).ToList());
        }
        internal static ElasticSanVolumeGroupData DeserializeElasticSanVolumeGroupData(JsonElement element)
        {
            IDictionary <string, string> tags               = default;
            AzureLocation                 location          = default;
            ResourceIdentifier            id                = default;
            string                        name              = default;
            ResourceType                  type              = default;
            SystemData                    systemData        = default;
            Optional <ProvisioningStates> provisioningState = default;
            Optional <StorageTargetType>  protocolType      = default;
            Optional <EncryptionType>     encryption        = default;
            Optional <NetworkRuleSet>     networkAcls       = default;

            foreach (var property in element.EnumerateObject())
            {
                if (property.NameEquals("tags"))
                {
                    Dictionary <string, string> dictionary = new Dictionary <string, string>();
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        dictionary.Add(property0.Name, property0.Value.GetString());
                    }
                    tags = dictionary;
                    continue;
                }
                if (property.NameEquals("location"))
                {
                    location = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("id"))
                {
                    id = new ResourceIdentifier(property.Value.GetString());
                    continue;
                }
                if (property.NameEquals("name"))
                {
                    name = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("type"))
                {
                    type = property.Value.GetString();
                    continue;
                }
                if (property.NameEquals("systemData"))
                {
                    systemData = JsonSerializer.Deserialize <SystemData>(property.Value.ToString());
                    continue;
                }
                if (property.NameEquals("properties"))
                {
                    if (property.Value.ValueKind == JsonValueKind.Null)
                    {
                        property.ThrowNonNullablePropertyIsNull();
                        continue;
                    }
                    foreach (var property0 in property.Value.EnumerateObject())
                    {
                        if (property0.NameEquals("provisioningState"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            provisioningState = new ProvisioningStates(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("protocolType"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            protocolType = new StorageTargetType(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("encryption"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            encryption = new EncryptionType(property0.Value.GetString());
                            continue;
                        }
                        if (property0.NameEquals("networkAcls"))
                        {
                            if (property0.Value.ValueKind == JsonValueKind.Null)
                            {
                                property0.ThrowNonNullablePropertyIsNull();
                                continue;
                            }
                            networkAcls = NetworkRuleSet.DeserializeNetworkRuleSet(property0.Value);
                            continue;
                        }
                    }
                    continue;
                }
            }
            return(new ElasticSanVolumeGroupData(id, name, type, systemData, tags, location, Optional.ToNullable(provisioningState), Optional.ToNullable(protocolType), Optional.ToNullable(encryption), networkAcls.Value));
        }