是时候弄清楚getExternalStorageDirectory()外部存储和内部存储的区别了
你的apk装到哪个盘里,那个盘就认为是外部存储器,这么说,不是很准确。 可以这么说,除了你的后来装到手机上的内存卡叫sdcard外,手机本身也有sdcard的成分,手机总的存储空间分为系统空间和手机U盘空间两部分,后者手机U盘空间就是sdcard。 从你的试验中知道,如果不插内存卡(我们都知道的sdcard),还是可以获取到sdcard的总存储容量和可用容量的,这个时候,总存储容量应该是你手机总的存储容量减去系统容量; 如果,插上内存卡,但是,你把apk安装到了手机上,而不是内存卡上,那么实验结果应该是和你不插内存卡的情况一样,但若是,你把apk安装到内存卡上,这个时候,你获取的总容量就是你内存卡的总量,可用容量就是你内存卡的可用容量。
存储方式有两种,具体如下:
第一个就是将你的文件放到内部存储中,就像自己建立的数据库一样,可以直接去read,不需要加路径。File直接作为参数传入就是直接read的方式。如图所示
第二种,就是将你的文件放入到外部存储中,这个时候的路径就可以通过Environment.getExternalStorageDirectory()获取。
如上方法是获取SD卡目录的Api,你会发现使用不同Android移动设备得到的sd卡目录不同,不仅如此,其中路径指向的都是相同的文件.
/sdcard/
/mnt/sdcard/
/storage/sdcard0/
人们可以通过OTG将读卡器与另一个SD卡连接起来,然后路径将成为/storage/sdcard1/。
/storage/emulated/legacy/
、、
File file = new File(Environment.getExternalStorageDirectory(), fileName); //手机内部存储的地址
Environment.getExternalStorageDirectory().getCanonicalPath()+ "/Amonitordata/beforeCalibrdata.Tpt//手机SD卡的存储路径
、、
参考文档:
https://blog.csdn.net/itermeng/article/details/79423035
https://bbs.csdn.net/topics/390901224