public static async Task SaveFileAsync(string FileName, T data)
{
MemoryStream memStream = new MemoryStream();
DataContractSerializer serializer = new DataContractSerializer(typeof(T));
serializer.WriteObject(memStream, data);
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(FileName,
CreationCollisionOption.ReplaceExisting);
using (Stream stream = await file.OpenStreamForWriteAsync())
{
memStream.Seek(0, SeekOrigin.Begin);
await memStream.CopyToAsync(stream);
await stream.FlushAsync();
}
}
public static async Task<T> RestoreFileAsync(string FileName)
{
T result = default(T);
try
{
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(FileName);
using (IInputStream inStream = await file.OpenSequentialReadAsync())
{
DataContractSerializer serializer = new DataContractSerializer(typeof(T));
result = (T)serializer.ReadObject(inStream.AsStreamForRead());
return result;
}
}
catch (FileNotFoundException)
{
return default(T);
}
}
이 코드를 사용하여 데이터를 저장 및 검색하면 정상적으로 작동합니다.로컬 파일 저장소가 자동으로 콘텐츠를 삭제합니다.
내 로컬 파일에 데이터를 저장하고 내 앱을 시작한 후에 데이터가없는 경우가 있습니다.
데이터를 .xml
파일로 저장합니다.
저장할 때마다 파일을 확인하고 저장 한 콘텐츠가 있습니다. 하지만 가끔은 그것을 제거, 나는 왜 몰라.
나는 DataContractJsonSerializer
을 시도했지만 여전히 동일한 문제가 있습니다.
파일이 비어 있거나 삭제 되었습니까? ** 이것이 ** 일어 났을 때? 파일을 보면서 앱을 실행할 수 있습니까? – Jess
파일이 비어 있지 않습니다. 삭제할 데이터를 복원 할 때 발생하며 모든 시간이 아닌 때때로 만료되며 때로는 저장된 데이터가 유지되는 경우가 있습니다. –
이것은 종종 잠금 문제입니다. 이 도움말은 도움이됩니까? http://blog.jerrynixon.com/2013/02/walkthrough-locking-asynchronous-file.html –