2013-01-14 27 views
3

當我想看到我的Android我通常會看兩個內部存儲外部存儲(SD卡)自由空間。Android文件系統和自由空間的混亂

什麼我在一些SO答案讀我會覺得內部存儲的數據(可用空間,可用空間等),這樣的基礎:

File path   = Environment.getDataDirectory(); 
StatFs stat   = new StatFs(path.getPath()); 
long blockSize  = stat.getBlockSize(); 
long totalBlocks  = stat.getBlockCount(); 
long availableBlocks = stat.getAvailableBlocks(); 
//Logging added to make sure I am not going mad 
Log.v(TAG,"Available Blocks: "+Long.toString(availableBlocks)); 
Log.v(TAG,"Total Blocks: "+Long.toString(totalBlocks)); 
Log.v(TAG,"Block size: "+Long.toString(blockSize)); 

如果我想獲得外部存儲(SD我的Android設備我的卡)會像這樣運行代碼:

FilePath path   = Environment..getExternalStorageDirectory(); 
    StatFs stat    = new StatFs(Environment.getPath()); 
    this.extblockSize  = stat.getBlockSize(); 
    long exttotalBlocks  = stat.getBlockCount(); 
    long extavailableBlocks = stat.getAvailableBlocks(); 
    //More logging to ensure I am not mad! 
    Log.v(TAG,"EXTAvailable Blocks: "+Long.toString(extavailableBlocks)); 
    Log.v(TAG,"EXTTotal Blocks: "+Long.toString(exttotalBlocks)); 
    Log.v(TAG,"EXTBlock size: "+Long.toString(extblockSize)); 

難道我說得這是你如何在Android設備上讀取外部和內部存儲?

假設我是對的,我有一些問題。當我在Samsung Galaxy SIII上運行上面的代碼時,上面的代碼片段返回的內存量完全相同。現在我知道我的三星有大約25GB的內部存儲器,我有一個4GB的SD卡。

然而,這兩段代碼返回25GB總和這是正確的,23GB免費這也是正確的但只限於內部存儲。我只是爲了我的生活無法弄清楚如何讀取SD卡的的文件系統信息。請參閱下面的日誌輸出以獲取正在輸出的實際值。

01-14 20:49:25.485: V/VLRApplication(730): Available Blocks: 6031460 
01-14 20:49:25.485: V/VLRApplication(730): Total Blocks: 6702651 
01-14 20:49:25.485: V/VLRApplication(730): Block size: 4096 

01-14 20:49:25.485: V/VLRApplication(730): EXTAvailable Blocks: 6031460 
01-14 20:49:25.485: V/VLRApplication(730): EXTTotal Blocks: 6702651 
01-14 20:49:25.485: V/VLRApplication(730): EXTBlock size: 4096 

所以我必須誤解這個概念。有人能爲我澄清這一點嗎?撥打Environment.getExternalStorageDirectory()的電話是否設置了SD卡的路徑?只是在一個側面說明,我還沒有在AVD仿真設備中嘗試過。

+0

我完全不確定,但我認爲有些設備只有一個存儲設備,這是外部的。例如,我非常肯定這就是Nexus 7的設計。 –

回答

1

大多數人的概念外部不同於谷歌的。內部空間與SD卡一起被視爲外部存儲目錄。

問題是,物理SD卡安裝在同一文件系統內,並且位置因製造商/ ROM而異。 Herehere是關於這個問題的一些問題。不幸的是,似乎沒有設備通用的解決方案。

+0

地理位置,所以我打了着名的Android碎片問題? – Namphibian

+0

哈,其中之一。說實話,我相信Google試圖微妙地推動製造商使用SD插槽。 – Geobits

+0

沒有趣味的Bug Bug。我可以看到,這些問題比我原先想象的更廣泛。謝謝你的信息! – Namphibian