public void WriteJson(DatFileManager fileManager, int len) { var json = ToString(); fileManager?.WriteToEnd(Encoding.UTF8.GetBytes(json), len); IsChenged = false; }
public void Dispose() { Save(); fManager?.Dispose(); fManager = null; jsonStructureManager = null; }
protected AbstractJsonResourceManager(string filePath, bool newFile = false, bool isCheckHash = true) { if (newFile) { if (File.Exists(filePath)) { File.Delete(filePath); } } fManager = new DatFileManager(filePath) { IsShiftJsonPosition = true }; var json = newFile ? string.Empty : Encoding.UTF8.GetString(fManager.GetBytesFromEnd(JSON_LEN)); jsonStructureManager = new JsonStructureManager(json, isCheckHash); fManager.IsCheckHash = jsonStructureManager.IsCheckHash; FilePath = filePath; }
public void DataVacuum() { DatFileManager makeDatFileManager(string f) => new DatFileManager(f) { IsCheckHash = fManager.IsCheckHash }; var tempFilePath = "{0}_temp".FormatString(this.fManager.FilePath); using (var tempfManager = makeDatFileManager(tempFilePath)) { jsonStructureManager.Vacuum(fManager, tempfManager, LEN, (completedNumber, fullNumber, currentFilePath) => { VacuumProgress?.Invoke(this, new ReadWriteProgressEventArgs(completedNumber, fullNumber, currentFilePath, true)); }); } var filePath = fManager.FilePath; fManager = fManager.Rename("_temp"); }
public void Vacuum(DatFileManager srcfileManager, DatFileManager destfileManager, int identifierLength, Action <int, int, string> action) { var files = GetFileStructures(); foreach (var dataFileInfo in files.Select((v, i) => new { v, i })) { var id = dataFileInfo.v.Id; var loc = dataFileInfo.v.Location; var nloc = srcfileManager.WriteToTemp(loc, destfileManager, identifierLength); ChangeFile(id, new FileStructure { Id = dataFileInfo.v.Id, Parent = dataFileInfo.v.Parent, Name = dataFileInfo.v.Name, Location = nloc, Additional = dataFileInfo.v.Additional, Hash = dataFileInfo.v.Hash }); action?.Invoke(dataFileInfo.i + 1, files.Length, dataFileInfo.v.Name); } IsChenged = true; }