android下应用程序的路径和javase不同,应用程序的数据要保存自己的文件夹里面 > > getFileDir(); 获取自己的文件夹 /data/data/包名(应用程序的名字)/files > getCacheDir(); /data/data/包名(应用程序的名字)/cache 谷歌给我们提供了两种应用程序的目录,files目录存放重要的应用程序数据.手机不会自动清理files目录的文件,比如配置信息,软件的清除数据就是清除这里。 cache目录是存放临时的不重要的数据.这个目录有特定,当手机内存空间不足的时候会自动清理cache目录的文件,软件清除缓存就是清除这里。 ##手机存储空间的划分 * 手机内部存储(files和cache,比较小一般2G4G,小米手机内存有16G是包括了外部存储的SD卡的,) Environment.getDataDirectory() > file目录 cache目录 > 容量有限,较小,价格比较贵,存储访问速度快 > 创建的文件在手机内部存储空间,**默认**的权限全部都是私有的. > 只有自己的应用程序可以访问, > 别的应用程序不可以访问. > 为什么不需要声明权限? * 手机外部存储 Environment.getExternalStorageDirectory() > sd卡 > 容量大,可以更换,价格便宜,32G 不到200块 > 读写声明权限
package com.itheima.storagesize; import java.io.File; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.text.format.Formatter; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); File dataFile = Environment.getDataDirectory(); // 数据内部存储空间 File sdFile = Environment.getExternalStorageDirectory();// 外部存储空间 long datasize = dataFile.getTotalSpace(); long sdsize = sdFile.getTotalSpace();//单位是byte TextView tv = (TextView) findViewById(R.id.tv); tv.setText("内部存储:" + Formatter.formatFileSize(this, datasize) + " " + "外部sd卡:" + Formatter.formatFileSize(this, sdsize)); // 三星 小米 魅族 // 有的厂商的sd卡目录:/mnt/sdcard // 有的厂商的sd卡目录:/mnt/storage01 // 有的厂商的sd卡目录:/mnt/stoarge02 // 有的厂商的sd卡目录:/mnt/mount/stoarge01 } }