Android数据持久化之I/O操作详解

发布时间 - 2026-01-11 00:55:50    点击率:

本文实例讲述了Android数据持久化之I/O操作。分享给大家供大家参考,具体如下:

前面文章里我们简单的介绍了File的操作,这一节来说说使用android平台自带对象实现文件的基本操作

主要的两个类:openFileOutput(写)和openFileInput(读)

向文件中写如数据代码如下:

//向文件写入内容
try {
  OutputStream os = openFileOutput("file-io.txt", Context.MODE_PRIVATE);
  String str = "向文件中写入数据";
  os.write(str.getBytes("utf-8"));
  os.close();
} catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

读取文中的代码如下:

//读取文件中的内容
try {
  InputStream is = openFileInput("file-io.txt");
  byte[] buffer = new byte[100];
  int byteLength = is.read(buffer);
  String str2 = new String(buffer, 0, byteLength, "utf-8");
  text.setText(str2.toString());
  is.close();
} catch (Exception e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
}

从上面的代码中可以看出:openFileOutput / openFileInput 的用法与之前的SharedPreferences 的用法有很大的相似性,下面简单说一下两者的异同:

SharedPreferences对象的创建:

SharedPreferences sp = getSharedPreferences("file",Contex.MODE_PRIVATE);

getSharedPreferences方法的第一个参数是指定要保存在手机内存中的文件名(不包括扩展名,扩展名为xml),第二个参数是表示SharedPreferences对象在创建XML文件时设置的文件属性;

Context.MODE_PRIVATE = 0 (默认),代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容

Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2

openFileOutput 方法是如何返回一个OutputStream对象的:

OutputStream os = openFileOutput("file.xml",Contex.MODE_PRIVATE);

openFileOutput 的第一个参数指定的文件名带有扩展名,第二个参数与getSharedPreferences的是一样的;从这两个方法来看,第一个参数只制定了文件名,并未包含文件的路径,因此,这两个方法只能将文件保存在手机的内存中固定的路径,对于大文件可能内存不够:

SharedPreferences 将XML 文件保存在:/data/data/<包名>/shared_prefs

openFileOutput 将文件保存在:/data/data/<包名>/files

Activity还提供了getCacheDir()和getFilesDir()方法:

getCacheDir()方法用于获取:/data/data/<package name>/cache 目录

getFilesDir()方法用于获取:/data/data/<package name>/files 目录。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android文件操作技巧汇总》、《Android数据库操作技巧总结》、《Android编程之activity操作技巧总结》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》、《Android视图View技巧总结》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。


# Android  # 数据持久化  # I/O操作  # Android数据持久化之ContentProvider机制详解  # Android数据持久化之读写SD卡中内容的方法详解  # Android数据持久化之File机制分析  # Android数据持久化之Preferences机制详解  # 详解Android开发数据持久化之文件存储(附源码)  # Android仿QQ好友列表分组实现增删改及持久化  # Android持久化技术之SharedPreferences存储实例详解  # Android持久化技术之文件的读取与写入实例详解  # Android SQLite数据库增删改查操作的使用详解  # Android开发之SQLite的使用方法  # Android使用SQLite数据库的简单实例  # Android数据持久化之SQLite数据库用法分析  # 第一个  # 操作技巧  # 这两个  # 第二个  # 扩展名  # 进阶  # 相关内容  # 感兴趣  # 给大家  # 可以看出  # 自带  # 能将  # 更多关于  # 不包括  # 所述  # 该文件  # 程序设计  # 操作方法  # 编程开发  # 大文件 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: zabbix利用python脚本发送报警邮件的方法  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何在万网开始建站?分步指南解析  Laravel如何发送系统通知?(Notification渠道示例)  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  西安专业网站制作公司有哪些,陕西省建行官方网站?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  怎样使用JSON进行数据交换_它有什么限制  Laravel如何为API生成Swagger或OpenAPI文档  如何在Tomcat中配置并部署网站项目?  Laravel如何处理文件下载请求?(Response示例)  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何快速搭建高效香港服务器网站?  黑客如何利用漏洞与弱口令入侵网站服务器?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  如何快速搭建虚拟主机网站?新手必看指南  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  浅析上传头像示例及其注意事项  PHP正则匹配日期和时间(时间戳转换)的实例代码  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  魔方云NAT建站如何实现端口转发?  免费视频制作网站,更新又快又好的免费电影网站?  JavaScript如何实现倒计时_时间函数如何精确控制  在Oracle关闭情况下如何修改spfile的参数  成都网站制作公司哪家好,四川省职工服务网是做什么用?  如何在 React 中条件性地遍历数组并渲染元素  Linux安全能力提升路径_长期防护思维说明【指导】  教你用AI润色文章,让你的文字表达更专业  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  如何快速查询网址的建站时间与历史轨迹?  高防服务器:AI智能防御DDoS攻击与数据安全保障  如何将凡科建站内容保存为本地文件?  JavaScript模板引擎Template.js使用详解  如何在宝塔面板中创建新站点?  如何快速搭建FTP站点实现文件共享?  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  iOS发送验证码倒计时应用  黑客入侵网站服务器的常见手法有哪些?  Laravel怎么使用Intervention Image库处理图片上传和缩放