点击查看大图
LogicalInternalStorageTool.java
/**
* Created by classichu on 2018/3/2.
* <p>
* 逻辑上的 Internal storage:
* 1 总是可用的
* 2 这里的文件默认只能被我们的app所访问。
* 3 当用户卸载app的时候,系统会把internal内该app相关的文件都清除干净。
* 4 Internal是我们在想确保不被用户与其他app所访问的最佳存储区域。
* <p>
* data 目录
* <p>
* 这下面的文件会在用户卸载我们的app时被系统删除
* <p>
* Android6.0+支持多用户 /data/user/0/<application package>
*/
public class LogicalInternalStorageTool {
/**
* /cache
*
* @return
*/
@Deprecated //功能示例
public static String getDownloadCacheDirectoryPath() {
return Environment.getDownloadCacheDirectory().getAbsolutePath();
}
/**
* /system
*/
@Deprecated //功能示例
public static String getRootDirectoryPath() {
return Environment.getRootDirectory().getAbsolutePath();
}
/**
* /data
*/
@Deprecated //功能示例
public static String getDataDirectoryPath() {
return Environment.getDataDirectory().getAbsolutePath();
}
/**
* app 的 internal 目录
* <p>
* /data/data/<application package>/files
* <p>
* miui等系统应用多开 时候
* /data/user/0/<application package>/files
* miui等系统应用多开 时候 小号
* /data/user/999/<application package>/files
*
* @param context
* @return
*/
public static String getFilesDirPath(Context context) {
return context.getFilesDir().getAbsolutePath();
}
/**
* /data/data/<application package>/files/file1
*/
@Deprecated //功能示例
public static String getFileStreamPath(Context context) {
return context.getFileStreamPath("file1").getAbsolutePath();
}
/**
* 对于 Files 目录下的文件,通常不会通过 File 类的方式直接进行读写,而是利用一些封装过的类或函数进行操作
* /data/data/<application package>/files/file2 的 FileInputStream
*/
@Deprecated //功能示例
public static FileInputStream openFileInput(Context context) {
try {
return context.openFileInput("file2");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 对于 Files 目录下的文件,通常不会通过 File 类的方式直接进行读写,而是利用一些封装过的类或函数进行操作
* /data/data/<application package>/files/file2 的 FileOutputStream
*/
@Deprecated //功能示例
public static FileOutputStream openFileOutput(Context context) {
try {
return context.openFileOutput("file2", Context.MODE_PRIVATE);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return null;
}
/**
* 对于 Files 目录下的文件,通常不会通过 File 类的方式直接进行读写,而是利用一些封装过的类或函数进行操作
* 删除
*/
@Deprecated //功能示例
public static boolean deleteFile(Context context) {
return context.deleteFile("file2");
}
/**
* 对于 Files 目录下的文件,通常不会通过 File 类的方式直接进行读写,而是利用一些封装过的类或函数进行操作
* 查询
*/