Exemplo n.º 1
0
        public static void Save(Swatch swatch, string filename, ISwatchFile fileType = null)
        {
            if (swatch == null || filename == null)
            {
                throw new ArgumentNullException();
            }

            if (fileType == null)
            {
                var extension = Path.GetExtension(filename);
                fileType = SupportedWrite.FirstOrDefault(f => f.Extensions.Contains(extension, StringComparer.OrdinalIgnoreCase));
                if (fileType == null)
                {
                    throw new NotSupportedException($"Not supported file type [{extension}].");
                }
            }

            if (!fileType.SupportSave)
            {
                throw new NotSupportedException($"Not supported to save file as type [{fileType.Name}].");
            }

            var fileInfo = new FileInfo(filename);

            if (fileInfo.Exists && fileInfo.IsReadOnly)
            {
                throw new Exception($"The file is read only.");
            }

            using (var stream = new FileStream(filename, FileMode.OpenOrCreate, FileAccess.Write))
            {
                fileType.Save(swatch, stream);
                swatch.FileName = filename;
            }
        }
Exemplo n.º 2
0
        public static void Save(Swatch swatch, Stream stream, ISwatchFile fileType)
        {
            if (swatch == null || fileType == null)
            {
                throw new ArgumentNullException();
            }

            if (!fileType.SupportSave)
            {
                throw new NotSupportedException($"Not supported to save file as type [{fileType.Name}].");
            }

            fileType.Save(swatch, stream);
        }
Exemplo n.º 3
0
        public static Swatch Load(string filename, ISwatchFile fileType = null)
        {
            if (string.IsNullOrEmpty(filename) || !File.Exists(filename))
            {
                throw new FileNotFoundException();
            }

            var extension = Path.GetExtension(filename);

            if (fileType == null)
            {
                var fileTypes = SupportedRead.Where(f => f.Extensions.Contains(extension, StringComparer.OrdinalIgnoreCase)).ToList();
                if (fileTypes.Count > 1)
                {
                    fileType = fileTypes.FirstOrDefault(ft => ft.CanLoad(filename));
                    if (fileType == null)
                    {
                        throw new NotSupportedException($"Not supported file type [{extension}].");
                    }
                }
                else if (fileTypes.Count == 1)
                {
                    fileType = fileTypes[0];
                }
            }

            if (fileType != null)
            {
                using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read))
                {
                    var swatch = fileType.Load(stream);
                    if (swatch != null)
                    {
                        swatch.FileName = filename;
                    }
                    return(swatch);
                }
            }
            else
            {
                throw new NotSupportedException($"Not supported file type [{extension}].");
            }
        }
Exemplo n.º 4
0
 public static Task <Swatch> LoadAsync(string filename, ISwatchFile fileType = null)
 {
     return(Task.Run(() => Load(filename, fileType)));
 }
Exemplo n.º 5
0
 public static Task SaveAsync(Swatch swatch, Stream stream, ISwatchFile fileType = null)
 {
     return(Task.Run(() => Save(swatch, stream, fileType)));
 }
Exemplo n.º 6
0
 public static Task SaveAsync(Swatch swatch, string filename, ISwatchFile fileType = null)
 {
     return(Task.Run(() => Save(swatch, filename, fileType)));
 }