[Android studio] 第19节 存储文件之内部存储

文章介绍了AndroidStudio中存储文件的常见方法,包括内部存储、外部存储、SharedPreferences和SQLite数据库。详细阐述了使用openFileOutput()方法进行文件存取的过程,并提到了不同文件模式的使用场景和注意事项,强调了数据安全性和权限管理的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、存储方式

二、存储过程之存入

三、存储过程之取出

四、openFileOutput() 方法的多种模式(mode)

一、存储方式

在 Android Studio 中,可以使用多种方式来存储文件。以下是几种常用的文件存储方法:

  1. 内部存储:

    • 调用 getFilesDir() 方法获取应用程序的内部存储目录。
    • 使用该目录可以在应用私有目录下创建文件和目录,只有应用本身可以访问这些文件。
    • 可以使用 Java 的 File 类或者 Kotlin 的 java.io.File 进行文件操作。
  2. 外部存储:

    • 调用 Environment.getExternalStorageDirectory() 方法获取外部存储目录。
    • 需要声明适当的权限(例如 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>)。
    • 在 Android 10(API 级别 29)及更高版本中,需要使用 MediaStore API 或 SAF(Storage Access Framework)来访问外部存储上的文件。
  3. SharedPreferences:

    • 使用 SharedPreferences 可以方便地存储小量的键值对数据。
    • 通过 getSharedPreferences() 或 getPreferences() 方法获取 SharedPreferences 对象。
    • 使用 SharedPreferences 对象的 edit() 方法开始编辑,并通过 putXxx() 方法存储数据。
  4. SQLite 数据库:

    • 如果需要存储大量结构化数据,可以使用 SQLite 数据库。
    • 需要创建表、定义模型类和执行 SQL 操作。
    • 可以使用 Android 提供的 SQLiteOpenHelper 类或第三方库来辅助管理数据库操作。

根据具体需求和数据量的大小,选择适合的文件存储方式。记得在使用外部存储时要处理权限问题和适应 Android 10 及以上版本的存储访问变更。

二、存储过程之存入

使用 openFileOutput() 方法将数据存储到内部存储中的文件:

String filename = "data";
String content = "要存储的内容";

try {
    FileOutputStream fos = openFileOutput(fi
### 如何在 Android Studio 中生成 APK 或 AAB 文件 #### 使用 Build 菜单生成 APK 通过 `Build` 菜单可以轻松生成未签名的调试版 APK。默认情况下,构建完成后可以在项目的特定目录找到该文件: - 构建路径: `projact->项目名->app->build->outputs->apk->debug-apk-debug.apk`[^3] 此方法适用于开发阶段测试用途。 --- #### 使用 Generate Signed Bundle/APK 功能生成正式发布的 APK 或 AAB 文件 为了生成用于分发的正式版本(Release 版本),需要执行以下操作: 1. **打开菜单**: 在 Android Studio 的顶部工具栏中选择 `Build -> Generate Signed Bundle / APK...` 2. **选择目标格式**: - 如果希望生成 `.aab` 文件,则选择 `Android App Bundle`。 - 注意事项:`.aab` 文件仅能在支持 Play 商店的应用程序更新机制上运行,通常适合上传至 Google Play Store[^4]。 - 若需生成传统的 `.apk` 文件,则选择 `APK` 并继续下一步。 3. **创建或导入密钥库**: 当前窗口会提示输入现有的密钥存储位置或者新建一个密钥存储。如果没有现成的密钥存储,请点击 `Create new...` 创建一个新的密钥配置。在此过程中需要填写的信息包括但不限于: - 密钥存储路径 - 存储密码 - 别名 (Alias) - 私钥密码 - 合法期限 (Validity period) 4. **完成签署过程并生成最终产物**: 继续按照向导逐步确认模块名称以及变体类型 (`release`),最后勾选 V1 和 V2 签名选项来确保兼容性和安全性。当一切准备就绪后按下 Finish 键即可启动编译流程。一旦成功结束,在指定输出目录下能够发现带有完整签名认证的目标文件位于 `app/release/` 下面。 5. **自定义 APK 名字**(可选): 可以修改 Gradle 配置脚本来固定生成 APK 的命名方式。例如下面这段代码展示了如何把所有的输出都命名为固定的字符串形式: ```gradle defaultConfig { applicationId "com.example.myapp" minSdkVersion 19 targetSdkVersion 30 versionCode 1 versionName "1.0" } android.applicationVariants.all { variant -> variant.outputs.all { outputFileName = "my_custom_name.apk" } } ``` 上述例子中的 `"my_custom_name"` 就是你想要设定的新名字[^5]。 --- #### 外部工具辅助转换 .aab 至 .apk 对于某些场景可能还需要额外借助第三方工具比如 bundletool 来实现从 .aab 格式的转化回传统意义下的多个独立平台适配型别的 apk 文档集合。这一步骤尤其重要因为并非所有设备都能直接解析安装 aab 类型的数据包。因此官方提供了专门处理此类需求的小应用程序——bundletool.jar,它可以从官网获取最新稳定发行版本链接[^1]。 --- ### 总结 综上所述,无论是快速迭代期间所需的简单 debug 模式还是面向市场公开发售所必备的安全加固措施齐全 release 形态的产品制作都可以依靠内置功能高效达成;而针对特殊定制化诉求则可通过调整 gradle script 实现灵活控制产出成果样式满足不同业务环的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以琦琦为中心

感谢打赏,小弟将继续努力创作!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值