特点:
WRITE_EXTERNAL_STORAGE
)。适用场景:
存储敏感配置、缓存文件、临时数据。
操作方式:
// 写入内部存储 File file = new File(getFilesDir(), "config.txt"); FileOutputStream fos = new FileOutputStream(file); fos.write("data".getBytes()); fos.close(); // 读取内部存储 FileInputStream fis = new FileInputStream(file); BufferedReader reader = new BufferedReader(new InputStreamReader(fis)); String line = reader.readLine();
媒体文件、下载内容、跨应用共享数据。
MANAGE_EXTERNAL_STORAGE
(Android 11+)或 WRITE_EXTERNAL_STORAGE
(旧版本)。READ_EXTERNAL_STORAGE
(Android 10+ 已废弃,改用MediaStore
API)。// 写入公共外部存储(需权限) File publicDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); File file = new File(publicDir, "image.jpg");
结构化数据存储(如用户信息、订单记录)。
SQLiteOpenHelper
。// 创建数据库帮助类 public class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(Context context) { super(context, "app.db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE user (id INTEGER PRIMARY KEY, name TEXT)"); } // 其他方法省略 }
特点:
操作方式:
// 写入数据 SharedPreferences prefs = getSharedPreferences("config", MODE_PRIVATE); prefs.edit().putString("key", "value").apply(); // 读取数据 String value = prefs.getString("key", "default");
对外提供数据(如通讯录、媒体库)。
// 读取联系人数据 Uri uri = ContactsContract.Contacts.CONTENT_URI; Cursor cursor = getContentResolver().query(uri, null, null, null, null);
存储类型 | 数据持久性 | 访问权限 | 适用数据类型 | 典型用途 |
---|---|---|---|---|
内部存储 | 高(随应用) | 仅限本应用 | 文件、二进制数据 | 配置文件、缓存 |
外部存储 | 低(手动删除) | 所有应用/用户 | 媒体、大文件 | 图片、视频、文档 |
SQLite数据库 | 高 | 仅限本应用 | 结构化数据 | 用户信息、订单记录 |
SharedPreferences | 高 | 仅限本应用 | 键值对(字符串、布尔等) | 用户设置、登录状态 |
ContentProvider | 依赖实现 | 可自定义 | 多种(通过URI) | 跨应用数据共享 |
解答:
解答:
MediaStore
API保存媒体文件。MANAGE_EXTERNAL_STORAGE
权限(需谨慎,可能被拒审)。