private void LoadFromFolder(string folderPath) { var dirInfo = new DirectoryInfo(folderPath); var items = new List <GuidObject>(); var settings = Serializer.Instance.State.Settings; var files = dirInfo.GetFiles("*.sav"); foreach (var fileInfo in files) { var path = Utils.PathCombine(folderPath, fileInfo.Name); var bytes = FileSystemCache.ReadAllBytes(path); var item = Serializer.Instance.Deserialize <GuidObject>(bytes, settings); item.SetParentFolder(this); lock (items) { items.Add(item); } } JoinItems(items); foreach (var subDirInfo in dirInfo.GetDirectories()) { var subFolder = new Folder(subDirInfo.Name, this); subFolder.LoadFromFolder(Utils.PathCombine(folderPath, subDirInfo.Name)); SubFolders[subDirInfo.Name] = subFolder; } }
private void SaveToFolder(string folderPath, HashSet <string> oldFiles) { Utils.EnsureDirectory(folderPath); var flags = Serializer.Instance.State.Settings.Flags; var count = Items.Count; Parallel.ForEach(Items, (GuidObject item) => { var path = Utils.PathCombine(folderPath, item.GetFileName() + ".sav"); var settings = new SerializationSettings(flags, item); var bytes = Serializer.Instance.Serialize(item, settings); FileSystemCache.WriteAllBytes(path, bytes); oldFiles.Remove(path.ToLowerInvariant()); }); foreach (var subFolder in SubFolders.Values) { subFolder.SaveToFolder(Utils.PathCombine(folderPath, subFolder.Name), oldFiles); } }