Android 存储学习之在内部存储中读写文件
来源:互联网 发布:java多泛型 编辑:程序博客网 时间:2024/06/05 16:29
大家都知道,在实际工作中开发,进场需要将一个文件写入到手机的存储中。既然说到手机的存储空间,那就先说说手机的存储空间分类:
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/files File file = new File(getFilesDir(), "info.txt");getFileDir的路径是包名下files文件下:当我们点击登录时,就会在此路径下创建一个info.txt文件
同理Google也提供了一个API: getCacheDir(),其路径大家可以猜到了,就是上图cache所在的路径了。
我们进入到系统设置,app,正在运行中就找到此进程
就能看到如上图所示,其中Clear Data按钮是清除包名文件夹下所有的内容,Clear Cache是清除Cache文件夹下的内容
0 0
- Android 存储学习之在内部存储中读写文件
- 黑马Android:在内部存储中读写文件
- 在内部存储中读写文件
- 在内部存储中读写文件
- 黑马Android:用API在内部存储中读写文件
- Android_02_在内部或外部存储中读写文件的操作
- 在内部存储中写文件
- 在内部存储中读文件
- 在内部存储中写文件
- Android 存储学习之在外部存储中读写文件
- Android学习(14) -- 在内部存储空间中读写文件
- 在内部存储写文件
- Android 内部存储中读写文件
- Android本地数据存储之.txt文件存储读写
- Androidx学习笔记(11)-- 文件读写操作-在内部存储空间中读写文件
- Android学习之 文件存储
- Android学习之文件存储
- 在内部存储中写文件详解(组件CheckBox的基本用法)
- 堆排序
- 关于System V 信号量
- OSG垃圾收集机制(DeleteHandler)
- JVM-characters
- Course Schedule -- leetcode
- Android 存储学习之在内部存储中读写文件
- Best Time to Buy and Sell Stock IV
- IIS6/7/8 WEB服务器不能访问grf报表模板文件的问题
- 解决Android 的模拟器显示乱码问题
- hihoCoder 1067 最近公共祖先·二
- 一个移动互联网自媒体的运营手记
- [深入理解Android卷一全文-第五章]深入理解常见类
- STL系列之一 deque双向队列
- linux下文件即文件夹操作