Esempio 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;
            }
        }
Esempio n. 2
0
        public static bool SupportToSaveAs(string filename)
        {
            if (string.IsNullOrEmpty(filename))
            {
                return(false);
            }

            var extension = Path.GetExtension(filename);

            return(SupportedWrite.Any(sw => sw.Extensions.Any(ex => ex.Equals(extension, StringComparison.OrdinalIgnoreCase))));
        }