簡體   English   中英

Xamarin.Android:反序列化ApplicationData中的文件?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM