public void Save(string _filename, string _exeRef = null) { BeforeSave(_exeRef); string filepath = Path.GetDirectoryName(_filename); try { if (!Directory.Exists(filepath)) { Directory.CreateDirectory(filepath); } XmlSerializer serializer = new XmlSerializer(typeof(Config)); using (TextWriter writer = new StreamWriter(_filename)) { serializer.Serialize(writer, this); } } catch (Exception e) { Loggers.WriteError(LogTags.Congif, "Exception while saving config file : \n " + _filename + "\n" + e.Message); } }
//========================================================================================= // txt file // static TaxonTreeNode LoadTxt(string _filename) { try { int ch = 0; using (StreamReader sr = new StreamReader(_filename)) { ch = (int)sr.Read(); while (ch != -1) { if (ch == '(') { break; } if (ch == (int)Keys.Return || ch == '>') { break; } ch = (int)sr.Read(); } } if (ch == '(') { return(LoadNewick(_filename)); } if (ch == (int)Keys.Return || ch == '>') { return(LoadJacFile(_filename)); } Loggers.WriteError(LogTags.Data, "Cannot recognize file forma : \n " + _filename); return(null); } catch { return(null); } }
public void SaveBin(string _fileName) { TaxonUtils.LockMainWindow(); try { using (ProgressDialog progressDlg = new ProgressDialog()) { progressDlg.StartPosition = FormStartPosition.CenterScreen; progressDlg.Show(); ProgressItem piSave = progressDlg.Add("Saving ...", null, 0, Count()); using (FileStream fs = File.Create(_fileName, 65536, FileOptions.None)) { using (DeflateStream deflateStream = new DeflateStream(fs, CompressionMode.Compress)) { using (BinaryWriter w = new BinaryWriter(deflateStream)) //using (BinaryWriter w = new BinaryWriter(fs)) { w.Write(SaveBinVersion); SaveBin(w, new SaveBinProgress(piSave)); w.Close(); deflateStream.Close(); fs.Close(); } } } } } catch (Exception e) { Loggers.WriteError(LogTags.Data, "Exception while saving config file : \n " + _fileName + "\n" + e.Message); } finally { TaxonUtils.UnlockMainWindow(); } }
//méthode load public static TaxonTreeNode LoadXML(string _fileName) { try { XmlSerializer deserializer = new XmlSerializer(typeof(TaxonTreeNode)); TextReader reader = new StreamReader(_fileName); object obj = deserializer.Deserialize(reader); reader.Close(); (obj as TaxonTreeNode).UpdateFather(); (obj as TaxonTreeNode).Visible = true; return(obj as TaxonTreeNode); } catch (Exception e) { string message = "Exception while loading " + _fileName + " : \n\n"; message += e.Message; if (e.InnerException != null) { message += "\n" + e.InnerException.Message; } Loggers.WriteError(LogTags.Data, message); } return(null); }
//========================================================================================= // Jac File load // static TaxonTreeNode LoadJacFile(string _filename) { try { using (StreamReader sr = new StreamReader(_filename)) { TaxonTreeNode root = new TaxonTreeNode(new TaxonDesc("__ignore__")); TaxonTreeNode currentNode = root; int currentTab = 0; int currentLine = 0; string line; // read header line while ((line = sr.ReadLine()) != null) { currentLine++; int tab = 0; while (line.StartsWith("\t")) { tab++; line = line.Substring(1); } if (tab > currentTab) { if (tab - currentTab > 1 || currentNode.Children.Count == 0) { Loggers.WriteError(LogTags.Data, _filename + "(" + currentLine.ToString() + ") too many tabs"); return(null); } currentTab = tab; currentNode = currentNode.Children[currentNode.Children.Count - 1]; } else if (tab < currentTab) { while (currentTab != tab) { if (currentNode == root) { Loggers.WriteError(LogTags.Data, _filename + "(" + currentLine.ToString() + ") tabulation error"); return(null); } currentTab--; currentNode = currentNode.Father; } } string[] parts = line.Split('>'); TaxonTreeNode newNode = new TaxonTreeNode(new TaxonDesc() { RefMultiName = new Helpers.MultiName(parts[0]), FrenchMultiName = parts.Length < 2 || String.IsNullOrWhiteSpace(parts[1]) ? null : new Helpers.MultiName(parts[1]), ClassicRank = parts.Length < 3 || String.IsNullOrWhiteSpace(parts[2]) ? ClassicRankEnum.None : ClassicRankEnumExt.FromString(parts[2]), Flags = (parts.Length < 4 || String.IsNullOrWhiteSpace(parts[3])) ? 0 : FlagsEnumExt.FromString(parts[3]), RedListCategory = (parts.Length < 5 || String.IsNullOrWhiteSpace(parts[4])) ? RedListCategoryEnum.NotEvaluated : RedListCategoryExt.FromString(parts[4]), } ); currentNode.AddChild(newNode); } return(root); } } catch (Exception e) { Loggers.WriteError(LogTags.Data, "Exception raised while reading file " + _filename + "\n " + e.Message); return(null); } }