/// <summary> /// Writes the Database to an XML file /// </summary> public void Write() { // initialize writer settings XmlWriterSettings writerSettings = new XmlWriterSettings(); writerSettings.Indent = true; // ready serializer XmlSerializerNamespaces serializerNameSpace = new XmlSerializerNamespaces(); serializerNameSpace.Add(String.Empty, String.Empty); XmlSerializer serializer = new XmlSerializer(typeof(DatabaseFile)); // create a new XML writer using (XmlWriter writer = XmlWriter.Create(XmlFileName, writerSettings)) { writer.WriteStartDocument(true); DatabaseFile databaseFile = new DatabaseFile() { Files = new List <FileChecksum>(_fileLookup.Values) }; serializer.Serialize(writer, databaseFile, serializerNameSpace); writer.WriteEndDocument(); writer.Flush(); } _hasChanges = false; }
/// <summary> /// Loads a Database from a XML file /// </summary> /// <param name="fileName">XML file name</param> /// <param name="basePath">Base path</param> /// <param name="pathType">Path type</param> /// <returns>New Database</returns> public static Database FromFile(string fileName, string basePath, PathType pathType) { // ensure file exists first if (!File.Exists(fileName)) { // otherwise, return a new empty Database return(new Database(fileName)); } // ready serializer XmlSerializerNamespaces serializerNameSpace = new XmlSerializerNamespaces(); serializerNameSpace.Add(String.Empty, String.Empty); XmlSerializer serializer = new XmlSerializer(typeof(DatabaseFile)); // load all elements from the XML DatabaseFile databaseFile = null; using (StreamReader reader = new StreamReader(fileName)) { try { databaseFile = (DatabaseFile)serializer.Deserialize(reader); } catch (XmlException) { // let callers handle error } catch (InvalidOperationException) { // let callers handle error } } if (databaseFile == null) { return(null); } Database db = new Database() { XmlFileName = fileName }; // initialize all elements into the hash table foreach (FileChecksum fileChecksum in databaseFile.Files) { if (String.IsNullOrEmpty(fileChecksum.ResolvedFileName) || String.IsNullOrEmpty(fileChecksum.Checksum)) { // skip bad entries continue; } // FilePath fileChecksum.InitFromXml(basePath, pathType); // add to the database's lookup table db._fileLookup.Add(fileChecksum.ResolvedFileName, fileChecksum); } return(db); }
/// <summary> /// Writes the Database to an XML file /// </summary> public void Write() { // initialize writer settings XmlWriterSettings writerSettings = new XmlWriterSettings(); writerSettings.Indent = true; // ready serializer XmlSerializerNamespaces serializerNameSpace = new XmlSerializerNamespaces(); serializerNameSpace.Add(String.Empty, String.Empty); XmlSerializer serializer = new XmlSerializer(typeof(DatabaseFile)); // create a new XML writer using (XmlWriter writer = XmlWriter.Create(XmlFileName, writerSettings)) { writer.WriteStartDocument(true); DatabaseFile databaseFile = new DatabaseFile() { Files = new List<FileChecksum>(_fileLookup.Values) }; serializer.Serialize(writer, databaseFile, serializerNameSpace); writer.WriteEndDocument(); writer.Flush(); } _hasChanges = false; }