2

文件工作,我要存儲一個JSON文件系統。我應該在哪裏存儲文件,以便用戶無法看到/刪除它們,並且在電話重啓/重啓後文件不會被刪除?與Xamarin PCL項目

ApplicationData執行程序的用戶特有的應用程序數據的目錄。在非Windows操作系統,這 路徑是環境變量XDG_CONFIG_HOME的值,如果它是 集,在當前用戶的主目錄 否則「的.config」目錄。

CommonApplicationData用於通過應用程序共享的數據的目錄。在非Windows操作系統上,「/ usr/share」 目錄。

LocalApplicationData計算機用戶共享的應用程序數據目錄。在非Windows操作系統上,這個路徑是 環境變量XDG_DATA_HOME,如果它被設置的值, 否則「本地/共享」目錄中的當前用戶的主目錄 。

個人的個人或家庭目錄爲當前用戶。在非Windows操作系統上,這是用戶的主目錄。

來源:System.Environment.SpecialFolder

我不明白什麼是個人整整,但在網絡上的大多數網站,我發現人們使用它。我應該使用其中之一還是我看錯了東西?

而對於目前存儲(2017年五月)我只有兩個選擇是SQLite的PCLStorage

回答

2

您可以使用以下任何文件夾爲您的要求。如果我正確理解您的問題,您只希望應用能夠訪問(創建/更新/刪除)某些應在手機重新啓動或重新啓動時保留的文件,並且用戶不應該能夠訪問這些文件。您可以使用下面的特殊文件夾中的任何

  • Environment.SpecialFolder.ApplicationData$HOME/.config,它映射到/data/data/@[email protected]/files/.config

  • Environment.SpecialFolder.LocalApplicationData$HOME/.local/share,其映射到/data/data/@[email protected]/files/.local/share

  • Environment.SpecialFolder.Personal$HOME,它映射到/data/data/@[email protected]/files

縱觀描述和映射到文件系統,用於保存JSON文件我可能會挑Environment.SpecialFolder.ApplicationData,但似乎沒有什麼錯根據他們在文件系統中的映射方式挑選三者之一。

請注意,所有這些路徑都在您的應用程序包的特定目錄內,因此沒有其他應用程序將能夠訪問這些文件。你也不能從任何文件系統訪問它們(除非電話是根植的)。

如果你想要的任何文件路徑的更多信息,你可以遍歷它們,就像這樣:

static void PrintFolderPath(System.Environment.SpecialFolder folder) 
{ 
    Console.WriteLine ("{0}={1}", folder, System.Environment.GetFolderPath(folder)); 
} 

更多閱讀:https://forums.xamarin.com/discussion/3773/system-environment-specialfolder

+0

是否有這3個目錄之間的任何權限的差異?還有什麼區別嗎? – JedatKinports

+0

它們沒有任何權限差異,因爲它們都屬於同一個應用程序包目錄。只是他們的位置是不同的。這些實現細節上的文檔確實缺失。用於處理文件的示例使用'Personal'來保存文件:https://developer.xamarin.com/guides/xamarin-forms/application-fundamentals/files/#iOS_and_Android – degant

+0

我看到了這個鏈接,但正如您已經說過的那樣,文檔非常差,這就是爲什麼我提出這個問題,我忘了提及我需要在我的PCL項目中這樣做。謝謝,這就是我想知道的。 :) – JedatKinports