save mcdf to temporary path before renaming

This commit is contained in:
rootdarkarchon
2024-03-14 01:56:20 +01:00
committed by Loporrit
parent 42de4345d8
commit 7b93c5a6e9

View File

@@ -193,6 +193,8 @@ public class MareCharaFileManager : DisposableMediatorSubscriberBase
public void SaveMareCharaFile(CharacterData? dto, string description, string filePath)
{
CurrentlyWorking = true;
var tempFilePath = filePath + ".tmp";
try
{
if (dto == null) return;
@@ -200,7 +202,7 @@ public class MareCharaFileManager : DisposableMediatorSubscriberBase
var mareCharaFileData = _factory.Create(description, dto);
MareCharaFileHeader output = new(MareCharaFileHeader.CurrentVersion, mareCharaFileData);
using var fs = new FileStream(filePath, FileMode.Create);
using var fs = new FileStream(tempFilePath, FileMode.Create);
using var lz4 = new LZ4Stream(fs, LZ4StreamMode.Compress, LZ4StreamFlags.HighCompression);
using var writer = new BinaryWriter(lz4);
output.WriteToStream(writer);
@@ -224,11 +226,12 @@ public class MareCharaFileManager : DisposableMediatorSubscriberBase
lz4.Flush();
fs.Flush();
fs.Close();
File.Move(tempFilePath, filePath, true);
}
catch (Exception ex)
{
_logger.LogError(ex, "Failure Saving Mare Chara File, deleting output");
File.Delete(filePath);
File.Delete(tempFilePath);
}
finally { CurrentlyWorking = false; }
}