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