[英]Xamarin.Android : Deserialize a file in ApplicationData?
我將用戶數據存儲在 ApplicationData 文件夾中。 它的路徑是通過以下方式獲得的:
userDataPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), "userData");
此變量等於/data/user/0/APPNAME/files/.config/userData
。
每次重建項目時,如果我使用File.Delete(userDataPath)
刪除 userData 文件,我可以成功創建文件,多次寫入和讀取。 我確實可以檢查/data/data/APPNAME/files/.config/userData
中創建的文件。 我簽入/data/data/.../.config/userData
而不是/data/user/.../.config/userData
因為顯然后者是前者的符號鏈接,所以它應該是等價的嗎? Moreother 我無權訪問/data/user/.../.config/userData
。
問題是,如果我在不刪除文件的情況下重建應用程序,我會在以下反序列化中遇到未處理的異常(之前運行良好):
if (File.Exists(userDataPath))
{
Stream reader = new FileStream(userDataPath, FileMode.Open);
Console.WriteLine(userDataPath);
userData = (UserData)serializer.Deserialize(reader); // ERROR HERE
reader.Close();
}
這很奇怪,因為位於/data/data/APPNAME/files/.config/userData
的文件不存在,但由於File.Exists(userDataPath)
為true
,因此位於/data/user/0/APPNAME/files/.config/userData
的文件/data/user/0/APPNAME/files/.config/userData
確實存在。
那么如何解釋,這是在 ApplicationData 文件夾中存儲數據的正確方法嗎?
切換到另一個 SpecialFolder (LocalApplicationData) 后,我無法再重現未處理的異常(即使切換回 ApplicationData)。
如果它再次發生,我會保持更新這篇文章。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.