视频课:【免费】零基础学安卓Android移动开发

本章内容

第1节  File Explorer操作

第2节  SharedPreferences

第3节  普通文件操作

第4节  SD卡读写操作

本章目标

熟练掌握FileExplorer的用法
熟练掌握SharedPreference文件操作。
熟练掌握普通文件的读写操作。
熟练掌握SD卡读写操作的方法。

FileExplorer操作

查看文件结构
创建文件夹
导入文件
导出文件及文件夹
删除文件

SharedPreferences概述

SharedPreferences主要用于保存类似配置信息的内容,SharedPreferences以XML格式保存数据,保存在/data/data/<package>/shared_prefs目录中,跟Properties中的信息类似,主要是键值对
读取SharedPreferences
首先通过Context. getSharedPreferences方法获得对象
第一个参数是文件名,需要包含后缀名(自动设置为xml)
第二个参数是访问模式,和普通文件的访问模式相同
通过SharedPreferences中的方法读取数据

SharedPreferences sp = getSharedPreferences("config",

Context.MODE_PRIVATE);

Stringusername = sp.getString(“username”,“root”);

Stringpassword = sp.getString(“password”,“123456”);

写入SharedPreferences
首先通过Context. getSharedPreferences方法获得对象
获取对象时采用写模式打开
通过SharedPreferences获得Editor对象
Editor对象中包含了写数据的方法
数据写入完成后一定要执行commit方法让数据生效

SharedPreferences sp = getSharedPreferences("config",

Context.MODE_PRIVATE);

Editor editor =sp.edit();

editor.put(“username”, “root”);

editor.put(“password”, “123456”);

editor.commit();

pe:solid;mso-style-textfill-fill-themecolor:text1;mso-style-textfill-fill-color:black;mso-style-textfill-fill-alpha:100.0%'>方法让数据生效

外部访问SharedPreferences

在一个应用中访问另一个应用的SharedPreferences数据
通过Context. createPackageContext 创建Context的实例
第一个参数是另一个应用的package名
第二个参数是选项标志
CONTEXT_INCLUDE_CODE
CONTEXT_IGNORE_SECURITY
通过建立的Context对象访问SharedPreferences

Contextcontext = createPackageContext(PKGNAME,

CONTEXT_IGNORE_SECURITY);

SharedPreferences cfg = context.getSharedPreferences(

PREFERENCE_NAME, MODE);

在一个应用中访问另一个应用的SharedPreferences数据
u关于权限的几个注意点
Ø两个应用的android:sharedUserId的内容要相同
Ø双方使用MODE_WORLD_READABLE或MODE_WORLD_WRITEABLE模式读写内容

利用openFileInput读取文件

利用openFileInput读取文件
u这是Context中的一个方法
Ø能够从应用相关的路径中打开一个文件输入流
u文件位置
Ø/data/data/<package>/files
u返回值是一个FileInputStream的对象
Ø这是一个文件输入字节流
利用openFileInput读取文件
u读取文件的一个示例

FileInputStream inputStream = this.openFileInput(fileName);

byte[]bytes = new byte[1024];

ByteArrayOutputStream os= new ByteArrayOutputStream();

while(inputStream.read(bytes)!= -1) {

os.write(bytes, 0, bytes.length);

}

inputStream.close();

os.close();

Stringcontent = new String(os.toByteArray());

showTextView.setText(content);

利用openFileOutput方法写入文件
u文件不存在时自动创建
u方法的第二个参数为打开模式
ØMODE_PRIVATE只能创建它的应用访问,重复写入时会文件覆盖
ØMODE_APPEND  私有访问,重复写入时会在文件的末尾进行追加
ØMODE_WORLD_READABLE公用模式,可读
ØMODE_WORLD_WRITEABLE公用模式,可读写
u通常建议使用私有模式
Ø公用模式下操作文件很危险,因为一旦并发将会带来程序的漏洞
利用openFileOutput方法写入文件
u写入文件示例

FileOutputStream outputStream = openFileOutput(fileName,

Activity.MODE_PRIVATE);

outputStream.write(content.getBytes());

outputStream.flush();

outputStream.close();

合理利用缓存
u文件的读写是对存储设备的访问
Ø输入输出的速率比较低
Ø频繁访问时会影响性能
u适当使用缓存提交效率
Ø将文件中需要频繁访问的内容读入内存
Ø在内存中进行数据的操作
Ø定期或者需要时再写入文件
Ø减少文件的输入输出次数
u但是缓存不能太大,以免占用太多资源导致系统性能下降
浏览SD卡上的文件
uSD卡通常是手机的扩展存储
u挂载到手机操作系统的文件系统下/mnt/sdcard/
uSD卡上的目录对所有应用都是可写的
u使用File类浏览SD卡上的目录内容

mso-color-index:1;mso-font-kerning:12.0pt;language:zh-CN;mso-style-textfill-type:solid;mso-style-textfill-fill-themecolor:text1;mso-style-textfill-fill-color:black;mso-style-textfill-fill-alpha:100.0%'>公用模式下操作文件很危险,因为一旦并发将会带来程序的漏洞

Filedir = new File(“/mnt/sdcard”);

String[]s = dir.list();

读取SD卡上的文件
u使用FileInputStream或者FileReader进行文件读取
FileInputStream in = new FileInputStream(“/mnt/sdcard/……”);
byte[] bytes = new byte[1024];
ByteArrayOutputStream os= new ByteArrayOutputStream();  while (in.read(bytes) != -1) {  os.write(bytes, 0, bytes.length);
}  in.close();
os.close();
String content = new String(os.toByteArray()); showTextView.setText(content);
将文件保存到SD卡上
u使用FileOutputStream或者FileWriter进行文件写入
FileOutputStream out = new FileOutputStream(“/mnt/sdcard/..”);
out.write(content.getBytes());
out.flush();
out.close();

跟我学Android之十二 文件解析与处理相关推荐

  1. Android Studio(十二):打包多个发布渠道的apk文件

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  2. 零基础入门学Python(十二)—— 魔法方法(下)

    零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(下) 1. 构造和析构 2. 算术运算 3. 简单定制 4. 属性访问 5. 描述 ...

  3. 零基础学lua第十天---文件操作

    零基础学lua第十天-文件操作 一.前言 每个编程语言和都少不了对文件操作,lua中操作文件的方法非常简单,而且文件和输入输出操作都是使用的同一个库,可以说是相当方便了,下面我们来看下吧. 二.读取文 ...

  4. 零基础入门学Python(十二)—— 魔法方法(上)

    零基础入门学Python系列内容的学习目录→\rightarrow→零基础入门学Python系列内容汇总. 魔法方法(上) 1. 构造和析构 1.1 _ _ init _ _(self[, ...]) ...

  5. JavaScript学习(六十二)—解析选项和序列化选项

    JavaScript学习(六十二)-解析选项和序列化选项 一.解析选项 格式:JSON.parse(参数1,参数2); 参数说明 参数1:表示要转换为JS对象的json字符串 参数2:表示将json转 ...

  6. Android入门(十二)SQLite事务、升级数据库

    原文链接:http://www.orlion.ga/610/ 一.事务 SQLite支持事务,看一下Android如何使用事务:比如 Book表中的数据都已经很老了,现在准备全部废弃掉替换成新数据,可 ...

  7. 跟我学SpringCloud | 第十二篇:Spring Cloud Gateway初探

    SpringCloud系列教程 | 第十二篇:Spring Cloud Gateway初探 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如 ...

  8. [一起学Hive]之十二-Hive SQL的优化

    十一.Hive SQL的优化 本章只是从HQL层面介绍一下,日常开发HQL中需要注意的一些优化点,不涉及Hadoop层面的参数.配置等优化. 其中大部分是我之前发过的博客文章,这里整理了下. 11.1 ...

  9. Android编译脚本(.mk文件)解析

    摘要:本文将简单介绍Android编译系统并举例说明如何编写不同类型的mk文件以达到不同的目的.虽然.mk文件即将被.bp文件替代,但是在Android9之前的版本中.mk文件的使用频率依旧很高,同时 ...

最新文章

  1. python三层装饰器-python三大神器===》装饰器
  2. Struts2 入门修行第一天 | 小节二
  3. SLAM学习--帝国理工学院机器人课程slam部分讲义(附下载链接)
  4. java当前时间转化毫秒_Java学习笔记-时间相关类
  5. JS数组的迭代器方法
  6. keras 自定义层input_从4个方面介绍Keras和Pytorch,并给你选择其中一个学习库的理由...
  7. 计算机一级b考试教程,全国计算机等级考试一级B教程
  8. 创建nim+安装vioc分区
  9. .Net的 Web项目的打包过程
  10. 星巴克全面上线美团外卖 并联合美团推出“1971客厅”
  11. linux里怎么解压war包,Linux压缩war和解压war包
  12. 三次根号 matlab,MATLAB求三次根号,怎么是错误的?
  13. STM32——理解时钟系统
  14. 详细讲解WIN7系统上Virtualbox4.2.8安装RedHat Enterprise Linux 6.4
  15. Element 单元格合计(多行合计、合计列合并)
  16. 迁移wordpress_WordPress迁移变得容易
  17. 找参考图的同志们看过来,分享几个建模参考网站给你们。再不用愁啦
  18. IA32-Linux地址转换过程
  19. 学计算机大一入实验室,上大一就可以做科研的上科大:充分尊重第一志愿,一半新生学计算机...
  20. GDOI2018事故记录

热门文章

  1. 烘干机设备选择技巧,广州奥伯特烘干机精心介绍
  2. LocalDate和LocalTime的用法介绍
  3. 随身wifi精灵比之360随身wif。。。
  4. 我要搬家:男朋友出轨了,小三竟然是我闺蜜
  5. 诺基亚n1 android 6.0,纳尼?Android 4.0?诺基亚N1手机?
  6. QT中.arg的用法
  7. vb.net 导出为excel及邮件群发
  8. 域名注册和域名解析详解
  9. 为什么在写js代码的时候onmouseover没有效果?
  10. 青瓦长忆旧事雨,朱伞深巷无故人。。。