diff --git a/Wox.Infrastructure/Storage/JsonStorage.cs b/Wox.Infrastructure/Storage/JsonStorage.cs index 29c6f509ef..abe1fd7b5e 100644 --- a/Wox.Infrastructure/Storage/JsonStorage.cs +++ b/Wox.Infrastructure/Storage/JsonStorage.cs @@ -1,4 +1,5 @@ using System; +using System.Globalization; using System.IO; using Newtonsoft.Json; using Wox.Infrastructure.Logger; @@ -64,12 +65,24 @@ namespace Wox.Infrastructure.Storage } } - public void LoadDefault() + private void LoadDefault() { + BackupOriginFile(); _data = JsonConvert.DeserializeObject("{}", _serializerSettings); Save(); } + private void BackupOriginFile() + { + var timestamp = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss-fffffff", CultureInfo.CurrentUICulture); + var directory = Path.GetDirectoryName(FilePath).NonNull(); + var originName = Path.GetFileNameWithoutExtension(FilePath); + var backupName = $"{originName}-{timestamp}{FileSuffix}"; + var backupPath = Path.Combine(directory, backupName); + File.Copy(FilePath, backupPath, true); + // todo give user notification for the backup process + } + public void Save() { string serialized = JsonConvert.SerializeObject(_data, Formatting.Indented);