openFileOutput()

本文介绍了Android应用中使用openFileOutput()方法保存数据的基本原理及不同文件操作模式的特点,包括私有模式、世界可读模式、世界可写模式及追加模式。

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

openFileOutput()的功能:用来保存数据。

FileOutputStream FOS=context.openFileOutput(string,MODE_WORLD_READABLE);表示创建名字为string的文件,保存类型为MODE_WORLD_READABLE

类型分为四种:类型MODE_PRIVATE是应用程序私有的 ,

MODE_WORLD_READABLE则所有应用程序都可以读取的,

MODE_WORLD_WRITEABLE所有应用程序都可以写入的,

MODE_APPEND如果要创建的文件存在则新写入的数据不会覆盖以前的数据。

Android 开发中,`openFileOutput()` 是用于将数据写入应用私有文件的重要方法。它通过返回 `FileOutputStream` 对象来实现文件的写入操作。以下是详细使用方法: ### 文件路径与命名 调用 `openFileOutput()` 时,第一个参数是文件名,不能包含路径分隔符 `/`。Android 会自动将文件保存在 `/data/data/<package name>/files/` 目录下。例如,如果应用的包名为 `cn.itcast.action`,创建的文件将存储在 `/data/data/cn.itcast.action/files/itcast.txt` 路径下 [^2]。 ### 操作模式 `openFileOutput()` 的第二个参数用于指定操作模式,支持以下几种模式: - `Context.MODE_PRIVATE`:默认模式,表示文件为私有数据,仅当前应用可以访问,写入时会覆盖原文件内容。 - `Context.MODE_APPEND`:如果文件已存在,则在文件末尾追加内容;如果文件不存在,则创建新文件。 - `Context.MODE_WORLD_READABLE`:表示其他应用可以读取该文件(在 Android 7.0 及以上版本中已被弃用)。 - `Context.MODE_WORLD_WRITEABLE`:表示其他应用可以写入该文件(同样在 Android 7.0 及以上版本中被弃用)。 如果希望文件可被其他应用读写,可以组合使用 `MODE_WORLD_READABLE` 和 `MODE_WORLD_WRITEABLE`,例如: ```java openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE); ``` ### 示例代码 以下是一个使用 `openFileOutput()` 保存用户输入的用户名和密码的示例: ```java submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 获取输入的用户名和密码 String names = name.getText().toString(); String pswds = pswd.getText().toString(); FileOutputStream fos = null; try { // 获取文件输出流,使用 MODE_APPEND 模式 fos = openFileOutput("login", Context.MODE_APPEND); // 写入用户名和密码 fos.write((names + " " + pswds + "\n").getBytes()); // 刷新缓冲区 fos.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭文件输出流 try { if (fos != null) { fos.close(); } } catch (IOException e) { e.printStackTrace(); } } // 启动另一个 Activity startActivity(new Intent(MainActivity.this, Main2Activity.class)); } }); ``` ### 注意事项 - 文件操作可能会抛出 `IOException` 或 `FileNotFoundException`,因此需要使用 `try-catch` 块进行异常处理。 - 文件关闭应在 `finally` 块中执行,以确保即使发生异常也能正确释放资源。 - Android 从 7.0(API 24)开始限制使用 `MODE_WORLD_READABLE` 和 `MODE_WORLD_WRITEABLE`,建议使用 `FileProvider` 或其他方式实现跨应用文件共享 [^2]。 ### 权限问题 如果文件存储在外部存储中,需要在 `AndroidManifest.xml` 中添加写入权限: ```xml <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 但 `openFileOutput()` 默认操作的是内部存储,因此通常不需要额外权限 [^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值