我面臨一個問題,試圖獲取應用程序根文件夾,問題出現在模擬器和棉花糖。當我做context.getFilesDir()
它返回一個錯誤的路徑:獲取Android應用程序根文件夾
數據/用戶/ 0/com.android.appname /文件/
當它應該是:
數據/數據/com.android.appname/files/
有人知道爲什麼會發生這種情況,以及如何解決它或以其他方式獲得正確的路徑到應用程序根文件夾?
我面臨一個問題,試圖獲取應用程序根文件夾,問題出現在模擬器和棉花糖。當我做context.getFilesDir()
它返回一個錯誤的路徑:獲取Android應用程序根文件夾
數據/用戶/ 0/com.android.appname /文件/
當它應該是:
數據/數據/com.android.appname/files/
有人知道爲什麼會發生這種情況,以及如何解決它或以其他方式獲得正確的路徑到應用程序根文件夾?
/data/user/0/com.android.appname/files/
是由getFilesDir()
返回的完全有效的路徑。該目錄可供您的應用程序使用。
adb
是不是你的應用程序。它對文件系統的看法會有所不同。
其中getFilesDir()
的確切位置映射到實際文件系統—或者像adb
工具將看到它—會根據一些標準,包括操作系統版本,用戶帳戶運行你的應用程序,它(記住:Android支持多用戶!)以及可能的設備製造商/定製ROM更改。
我想要的是將我的應用程序的SQLite數據庫從根文件夾複製到SDCard。 'database'文件夾位於第二個路徑中,第一個應用程序找不到它。這是有道理的,你說什麼,但應用程序都不能找到該路徑中的數據庫。你能告訴我爲什麼應用程序在'/ data/data ...'文件夾中創建數據庫,如果它的另一個是「正確的」? –
@AlbertoMéndez:他們都是正確的,因爲他們都映射到同一個地方。 – CommonsWare
是的,我認爲,但它似乎沒有這樣做,因爲它落入catch(IOException)嘗試獲取數據庫文件並拋出消息「文件未找到」。這就是我來這裏問 –
「它返回一個錯誤的路徑」 - 這看起來非常好,尤其是對於新版本的Android。是什麼讓你認爲這是錯的? – CommonsWare
因爲我的應用程序存儲文件的文件夾是第二個。 –
你究竟如何確定這一點?請記住,當通過像'adb shell'這樣的工具查看時,文件系統看起來會有所不同。 – CommonsWare