上一篇
安卓存储信息到txt
- 行业动态
- 2025-04-24
- 3
在Android中存储信息到txt文件,可通过FileOutputStream或BufferedWriter写入内部/外部存储路径,需确保添加存储权限(如WRITE_EXTERNAL_STORAGE),使用getExternalFilesDir()获取安全目录,按字节流写入文本内容并关闭资源
安卓存储信息到TXT文件的实现步骤
申请存储权限
- AndroidManifest.xml中声明权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
- 动态申请权限(Android 6.0+):
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); }
选择存储路径
存储类型 | 路径格式 | 特点 |
---|---|---|
内部存储 | /data/data/包名/files/ | 无需申请权限,仅限本应用访问 |
外部存储 | /storage/emulated/0/Download/ | 需申请权限,所有应用可见 |
缓存目录 | /data/data/包名/cache/ | 系统可清理,适合临时文件 |
创建文件并写入数据
// 示例:写入到外部存储的Download目录 String fileName = "example.txt"; File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName); try (FileOutputStream fos = new FileOutputStream(file, true)) { // true表示追加模式 String content = "Hello, World! "; fos.write(content.getBytes(StandardCharsets.UTF_8)); } catch (IOException e) { e.printStackTrace(); }
读取TXT文件内容
try (BufferedReader br = new BufferedReader(new FileReader(file))) { String line; while ((line = br.readLine()) != null) { Log.d("FileContent", line); } } catch (IOException e) { e.printStackTrace(); }
存储方式对比表
维度 | 内部存储 | 外部存储 |
---|---|---|
权限要求 | 无 | 需申请WRITE_EXTERNAL_STORAGE |
数据可见性 | 仅本应用可见 | 所有应用可见 |
存储容量 | 受限于设备内存 | 依赖外部存储介质(如SD卡) |
适用场景 | 敏感数据、配置信息 | 日志、公共文件共享 |
常见问题与解答
问题1:Android 11+如何兼容存储权限?
解答:
Android 11(API 30)后,直接访问外部存储的WRITE_EXTERNAL_STORAGE
权限被限制,替代方案:
- 使用
MediaStore
API保存媒体文件(如图片、视频)。 - 通过
Storage Access Framework
(SAF)获取用户授权的目录。 - 将文件存储在应用的私有外部存储空间(
getExternalFilesDir()
)。
问题2:如何判断文件是否写入成功?
解答:
- 异常捕获:检查
FileOutputStream
或BufferedWriter
是否抛出IOException
。 - 文件校验:写入后立即读取文件内容,验证数据完整性。
- 日志记录:在
try-catch
块中添加日志,记录写入状态