У меня есть приложение UWP, которое я развертываю как AppPackage, и я вижу ошибку отключения, когда пытаюсь прочитать / сохранить файл в папке LocalState. Это происходит не каждый раз, поэтому я думаю, что в какой-то момент файл заблокирован во время процесса. Ошибка
В целевой многобайтовой кодовой странице нет сопоставления для символа Юникода.
И код, который выдает ошибку
private const string SETTINGS_FILENAME = "settings.json";
private static readonly StorageFolder _settingsFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
public async static Task<ConfigWrapper> LoadSettings()
{
try
{
StorageFile sf = await _settingsFolder.GetFileAsync(SETTINGS_FILENAME);
if (sf == null) return null;
string content = await FileIO.ReadTextAsync(sf, Windows.Storage.Streams.UnicodeEncoding.Utf8);
return JsonConvert.DeserializeObject<ConfigWrapper>(content);
}
catch (Exception e)
{
DiagnosticsClient.TrackException(e);
return null;
}
}
public async static Task<bool> SaveSettings(ConfigWrapper data)
{
try
{
StorageFile file = await _settingsFolder.CreateFileAsync(SETTINGS_FILENAME, CreationCollisionOption.ReplaceExisting);
string content = JsonConvert.SerializeObject(data, Newtonsoft.Json.Formatting.Indented, new JsonSerializerSettings { });
await FileIO.WriteTextAsync(file, content, Windows.Storage.Streams.UnicodeEncoding.Utf8);
return true;
}
catch (Exception e)
{
DiagnosticsClient.TrackException(e);
return false;
}
}
Я обязательно сохраняю и читаю файл в UTF-8, поэтому я не уверен, почему может возникнуть ошибка кодирования. Что мне нужно сделать (например, заблокировать файл), когда я сохраняю / читаю?
file filename
, чтобы увидеть, может ли он с помощью своей магии определить, что это такое. - person Rick James   schedule 26.04.2020