是時(shí)候弄清楚getExternalStorageDirectory()外部存儲(chǔ)和內(nèi)部存儲(chǔ)的區(qū)別了
你的apk裝到哪個(gè)盤(pán)里莺褒,那個(gè)盤(pán)就認(rèn)為是外部存儲(chǔ)器,這么說(shuō),不是很準(zhǔn)確暖侨。 可以這么說(shuō),除了你的后來(lái)裝到手機(jī)上的內(nèi)存卡叫sdcard外崇渗,手機(jī)本身也有sdcard的成分字逗,手機(jī)總的存儲(chǔ)空間分為系統(tǒng)空間和手機(jī)U盤(pán)空間兩部分,后者手機(jī)U盤(pán)空間就是sdcard宅广。 從你的試驗(yàn)中知道葫掉,如果不插內(nèi)存卡(我們都知道的sdcard),還是可以獲取到sdcard的總存儲(chǔ)容量和可用容量的跟狱,這個(gè)時(shí)候俭厚,總存儲(chǔ)容量應(yīng)該是你手機(jī)總的存儲(chǔ)容量減去系統(tǒng)容量; 如果驶臊,插上內(nèi)存卡挪挤,但是,你把a(bǔ)pk安裝到了手機(jī)上关翎,而不是內(nèi)存卡上扛门,那么實(shí)驗(yàn)結(jié)果應(yīng)該是和你不插內(nèi)存卡的情況一樣,但若是纵寝,你把a(bǔ)pk安裝到內(nèi)存卡上论寨,這個(gè)時(shí)候,你獲取的總?cè)萘烤褪悄銉?nèi)存卡的總量店雅,可用容量就是你內(nèi)存卡的可用容量政基。
存儲(chǔ)方式有兩種,具體如下:
第一個(gè)就是將你的文件放到內(nèi)部存儲(chǔ)中闹啦,就像自己建立的數(shù)據(jù)庫(kù)一樣沮明,可以直接去read,不需要加路徑窍奋。File直接作為參數(shù)傳入就是直接read的方式荐健。如圖所示
第二種,就是將你的文件放入到外部存儲(chǔ)中琳袄,這個(gè)時(shí)候的路徑就可以通過(guò)Environment.getExternalStorageDirectory()獲取江场。
如上方法是獲取SD卡目錄的Api,你會(huì)發(fā)現(xiàn)使用不同Android移動(dòng)設(shè)備得到的sd卡目錄不同窖逗,不僅如此址否,其中路徑指向的都是相同的文件.
/sdcard/
/mnt/sdcard/
/storage/sdcard0/
人們可以通過(guò)OTG將讀卡器與另一個(gè)SD卡連接起來(lái),然后路徑將成為/storage/sdcard1/碎紊。
/storage/emulated/legacy/
佑附、樊诺、
File file = new File(Environment.getExternalStorageDirectory(), fileName); //手機(jī)內(nèi)部存儲(chǔ)的地址
Environment.getExternalStorageDirectory().getCanonicalPath()+ "/Amonitordata/beforeCalibrdata.Tpt//手機(jī)SD卡的存儲(chǔ)路徑
、音同、
參考文檔:
https://blog.csdn.net/itermeng/article/details/79423035
https://bbs.csdn.net/topics/390901224