大家都知道,在实际工作中开发,进场需要将一个文件写入到手机的存储中。既然说到手机的存储空间,那就先说说手机的存储空间分类:

1: 内部存储空间

RAM内存: 也就是手机的运行的内存,相当于电脑的内存

ROM内存: 也就是手机的存储内存,相当于电脑的硬盘

2: 外部存储空间

也就是可插拔的SD卡,相当于电脑的移动硬盘,U盘等。

既然手机存储分为两类,那我们先看看如何在手机的内部存储中读写文件。

那我们引入一个实际中很常见的例子:

一般带登录界面的,都需要将用户的信息保存到本地。我们就用上面的例子演示,将用户输入的信息保存到手机的内部存储。

布局文件代码如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="${relativePackage}.${activityClass}" android:orientation="vertical"><EditText android:id="@+id/ed_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入用户名"android:layout_marginTop="20dp"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"/><EditText android:id="@+id/ed_passwd"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入密码"android:layout_marginLeft="20dp"android:layout_marginRight="20dp"android:inputType="textPassword"/><RelativeLayout android:layout_width="fill_parent"android:layout_height="wrap_content"><CheckBox android:id="@+id/cb"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="自动登录"android:layout_centerVertical="true"android:layout_marginLeft="40dp"/><Button android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="登录"android:layout_marginRight="40dp"android:layout_alignParentRight="true"android:onClick="login"/></RelativeLayout></LinearLayout>

当我们点击按下确定按钮后,会将我们的用户信息,写到手机的内部存储中,也就是该应用所在的包名下

 public void login(View v){String name = ed_nam.getText().toString();String passwd = ed_passwd.getText().toString();//判断用户名或者密码是否输入if((name.equals("")) || (passwd.equals(""))){Toast.makeText(this, "用户名或密码不能为空", Toast.LENGTH_SHORT).show();}else {//如果选中自动登录,我们就需要保存用户名和密码if(cb.isChecked()){//创建一个文件,用户保存用户名和密码File file = new File("data/data/com.demo.storage/info.txt");try {FileOutputStream fos = new FileOutputStream(file);//写入用户名和密码,以name##passwd的格式写入fos.write((name + "##" + passwd).getBytes());//关闭输出流fos.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();}}

我所指定的文件存储路径就是包名下的info.txt文件:

我们导出可以看下:

到这里的话,我们的往手机的内部存储中写已经完成。接下是往手机的内部存储中读。

那我们就这样做,当如果只要点击进入此Actiivty就显示出用于以前保存的用于和密码

public void readInfo(){File file = new File("data/data/com.demo.storage/info.txt");//如果文件存在,则读取if(file.exists()){try {FileInputStream fin = new FileInputStream(file);//把字节流转化为字符流BufferedReader buffer = new BufferedReader(new InputStreamReader(fin));//读取文件中的用户名和密码String text = buffer.readLine();//以##为关键字分割字符String s[] = text.split("##");//设置进EditTexted_nam.setText(s[0]);ed_passwd.setText(s[1]);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

当我们只要进入就会回显出,我能输入的用户名和密码:

到这里我们的读写就完成了。

但是有人有没有发现我们上面的路径都是我们自己写死的,同时也是自己用手一个一个写的,万一中间写错一个字母,岂不是很麻烦。

不过Google给我们提供了一个专门访问内部存储的API:getFilesDir()

             //创建一个文件,用户保存用户名和密码//File file = new File("data/data/com.demo.storage/info.txt");//getFilesDir返回的是一个File对象,其路径是:data/data/com.demo.storage/filesFile file = new File(getFilesDir(), "info.txt");

getFileDir的路径是包名下files文件下:当我们点击登录时,就会在此路径下创建一个info.txt文件

同理Google也提供了一个API: getCacheDir(),其路径大家可以猜到了,就是上图cache所在的路径了。

我们进入到系统设置,app,正在运行中就找到此进程

就能看到如上图所示,其中Clear Data按钮是清除包名文件夹下所有的内容,Clear Cache是清除Cache文件夹下的内容

Android 存储学习之在内部存储中读写文件相关推荐

  1. Android中读写文件的N种方法

    在android或者java中读写文件时,我们常常面临不知道该用哪种方法来实现,今天我们一起来总结一下N种读写文件的方法. 一.文件输入输出流读写文件 public void writeFileStr ...

  2. php写文件 效率,php中读写文件与读写数据库的效率_PHP教程

    本文章来给大家介绍一个关于php中读写文件与读写数据库的效率对比,有需要了解的朋友可参考. 测试程序如下: //说明1:由于读数据库语句调用简单的封包函数两次,所以把读文件也改成连续调用两次,数据库记 ...

  3. [PB] PB中读写文件通用的两个函数

    PB中读写文件通用的两个函数 1.文件读取 : //函数名:f_readfile //功能:读取文件//参数:// io_file:ref blob 大对象类型,存储读出的文件内容:// is_fil ...

  4. Linux内核中读写文件数据的方法

    Linux内核中读写文件数据的方法     有时候需要在Linuxkernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数, ...

  5. 【转】 Linux内核中读写文件数据的方法--不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法     有时候需要在Linuxkernel ...

  6. java 访问手机存储卡,Android App将数据写入内部存储和外部存储的示例

    File存储(内部存储) 一旦程序在设备安装后,data/data/包名/ 即为内部存储空间,对外保密. Context提供了2个方法来打开输入.输出流 FileInputStream openFil ...

  7. Android数据存储之SharePreference和内部存储

    Android中的数据存储 *存储方式 1.SharedPreference存储:简单的信息... 2.内部存储:保存在app内部存储空间,非公开 3.外部存储:公共空间 4.数据库存储:结构化数据 ...

  8. python中二进制文件_Python学习基础篇 -6: Python中的文件操作

    前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 . 文件有有什么用 文件可以看作一个仓库 ...

  9. python中文件操作中不同的文件操作有何差异_Python学习基础篇 -6: Python中的文件操作...

    前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 .文件有有什么用 文件可以看作一个仓库, ...

  10. android json mysql_Android通过json向MySQL中读写数据的方法详解【读取篇】

    本文实例讲述了Android通过json向MySQL中读取数据的方法.分享给大家供大家参考,具体如下: 首先 要定义几个解析json的方法parseJsonMulti,代码如下: private vo ...

最新文章

  1. sharepoint 2010 内容类型
  2. 光耦p621引脚图_光耦反馈设计再也不愁!开关电源中的几种典型光耦隔离接法对比...
  3. 在html中怎么写加起来的,css可以在html里面写吗?
  4. 动态规划——雇佣员工(hdu1158)
  5. redis缓存跟数据库数据不一致问题解决
  6. swift函数的用法,及其嵌套实例
  7. lintcode: Check Sum of Square Numbers
  8. NLPIR语义智能平台支持大数据个性化学习
  9. 怎样设置计算机默认字体及语言,电脑win10系统怎么将paint 3D的语言设置为中文...
  10. 多线程编程下单例模式与多例模式的使用总结
  11. android之读取网络图片并显示
  12. vue改页面顶部浏览器标题栏图标、名称和地址栏详细教程
  13. BAT病毒-让电脑快速蓝屏
  14. python中一元二次方程的判别式_【Python算法作业】解一元二次方程
  15. html中怎样写渐变色代码,html颜色渐变代码 怎样用css实现网页背景颜色渐变
  16. 计算机主板供电故障,电脑主板内存电路常见故障的检修
  17. Aruba无线AP入坑心得
  18. zz红外焦平面阵列用信号处理电路
  19. 简单排查java应用CPU飙高的线程问题
  20. pytorch统计模型参数量

热门文章

  1. linux 共享内存 信号量 同步
  2. JS双引号替换单引号
  3. linux —— ubuntu 初次安装问题
  4. css-a:visited
  5. java提高篇(十三)-----字符串
  6. 木其工作室(专业程序代写服务)[转]Linux设备驱动程序学习-中断处理
  7. 简单的三层框架以及使用dbutils进行数据库操作(入门)
  8. IE6 与 GZIP, BUG汇总
  9. 读懂hadoop、hbase、hive、spark分布式系统架构
  10. 泛微发布亿元补贴计划,推动移动办公普及