2014-09-03 60 views
0

我正在研究一個需要將一些.txt存儲到android的項目,並將其從計算機中獲取以供其他用途。根據我從文檔中讀到的內容,我知道有兩種類型的存儲:1內部,它位於手機內部,是應用程序專用的。 2外部,其中包括SD卡和手機的內部存儲。我想保存它外部 - >內部,而且我用這行代碼來做到這一點:Android文件存儲如何工作?

public String WalkDir = android.os.Environment.getExternalStorageDirectory().getAbsolutePath() + "/Walks/";

當我登錄WalkDir,logcat的說:「/存儲/模擬/ 0」,我停了下來該應用程序,使用adb shell進行檢查,並且沒有文件夾「0」但是「傳統」。我拔下手機並將其插回,「Walks」文件夾現在位於根目錄中,我不需要adb shell來訪問它。

所以我的問題是,你能幫助解釋這個系統是如何工作的嗎?爲什麼「0」消失?什麼是「遺產」?爲什麼當我拔下&插件時,文件在內部存儲器中?

非常感謝!

+0

否。有內部,外部和可移動內存。後者是一個微型SD卡。前兩個內置到設備中。不要使用adb進行調查。在設備上使用文件資源管理器應用程序。 – greenapps 2014-09-03 19:45:52

回答

0

那些是什麼在Linux中被稱爲符號鏈接(如同在Windows快捷鍵),在不同的Android系統應用使用..

/存儲/ SD卡是符號鏈接的文件夾,這意味着當你打開其中的一個,它重定向到原來的(/ data/media/0),因爲0只是在android 4.2中實現的一個多用戶功能,但只能在平板機器人上啓用。 爲什麼這個Sym-Link™:簡單,所以它dosent中斷應用程序(不僅文件資源管理器類型的應用程序,但所有的應用程序)。 仍然沒有得到,爲什麼它會打破?。簡單。 android api有很多方法可以從文件夾寫入/讀取文件,你可以手動完成,你可以獲得數據路徑,你可以獲得SD卡路徑等等。所以爲了不破壞他們只是做這些sym鏈接,這就是爲什麼在一個應用程序中,存儲擁有者在/ sdcard上列出,而在其他應用程序中是/ storage等等。由於Android的這些變化而破壞的應用程序的一個示例是鈦備份,您需要更改其上的內部存儲,因此它可以正常工作。

2個掛載點指向相同的存儲設備和分區。 如果您在一個文件夾中創建了某些內容,它將顯示在另一個文件夾中。同樣適用於刪除東西。 他們沒有帶走更多的存儲空間,因爲它只有一次,但顯示兩次。

您也不需要擔心它,因爲文件瀏覽器通常將其默認目錄設置爲這些位置之一。

據我所知,Google將Android 4.2的掛載點更改爲/ storage/emulated/0 /,原因是它們切換到了sdcard的MTP和EXT4(?)。其他安裝點仍然在那裏兼容。