Android(目录,存储,sdcard)
文章目录
#Context
Context 可以理解成大工具类
通过上下文 可以访问跟当前应用相关的 全局信息(系统资源) 也可以访问当前应用的私有资源 和类
也可以做系统级的调用 比如 开启另外一个activity 发广播 开启服务
获取data/data/包名/ 目录
getFilesDir(); 操作的是 data/data/包名/files
openFileInput->FileInputStream
这两个方法获取的流实际上操作的就是getFilesDir()对应目录下的文件
openFileOutput->FileOutputStream
访问/data/data/包名 这个私有目录 一定要使用上下文获取路径
//操作data/data/包名/files/目录下
//1种
File absoluteFile = new File(getFilesDir().getAbsolutePath()+File.separator+"123.txt");
//2种
try {
FileOutputStream fileOutputStream = openFileOutput("456.txt", MODE_PRIVATE);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
详细代码:
public static boolean saveInfobycontext(Context context,String username, String pwd) {
//使用上下文获取应用相关私有路径
try {
FileOutputStream fos = context.openFileOutput("info2.txt", Context.MODE_PRIVATE);
fos.write(info.getBytes());
fos.close();
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
public static String[] readInfobyContext(Context context){
try {
FileInputStream fis = context.openFileInput("info2.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
return temp;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
openFileOutput(String name, int mode)
mode几种模式说明
- MODE_PRIVATE
对应文件权限 -rw-rw---- 文件大小不变,覆盖之前的内容 - MODE_APPEND
对应文件权限 -rw-rw---- 追加内容,不会覆盖之前的文件 - MODE_WORLD_READABLE
对应文件权限 -rw-rw-r-- 其他人可以读 - MODE_WORLD_WRITEABLE
对应文件权限 -rw-rw–w- 其他人可以写
获取sdcard卡目录
申明权限:
android:name=“android.permission.READ_EXTERNAL_STORAGE”
android:name=“android.permission.WRITE_EXTERNAL_STORAGE”
如何获取该路径?
//保存文件到sdcard卡
//需要申请权限
String absolutePath = Environment.getExternalStorageDirectory().getAbsolutePath();
//获取外部存储状态 注意状态 是 MEDIA_MOUNTED 才代表sdcard可用
String externalStorageState = Environment.getExternalStorageState();
//TODO 32图
获取sdcard卡大小
File externalStorageDirectory = Environment.getExternalStorageDirectory();
long totalSpace = externalStorageDirectory.getTotalSpace();
long freeSpace = externalStorageDirectory.getFreeSpace();
String total = android.text.format.Formatter.formatFileSize(this, totalSpace);
String free = android.text.format.Formatter.formatFileSize(this, freeSpace);
SharePreferences
-
公共方法:
-
使用方式:
例子:
//轻量级的存储信息api 可以保存的数据类型有6种(boolean,int,log,float,String,set<String>)
// 使用场景:配置应用属性(时候开启日夜模式,上网数据使用wifi还是流量)
//获取SharePreferneces对象 第一个参数是文件名称 第二个参数是存储的模式
//如果该文件不存在会自动创建
SharedPreferences info = getSharedPreferences("info", MODE_PRIVATE);
SharedPreferences.Editor edit = info.edit();
edit.putString("test", "123");
edit.apply();
//取出内容 第二个参数是默认值
String test = info.getString("test", "456");
//文件会保存在 data/data/包名/shared_prefs
文件权限
linux使用十位二进制数表示文件权限
第一位用来表示 是文件(-)还是目录(d)
后面的九位,每3位代表一个组 分别是 当前用户, 同组用户, 其他用户