Androidx学习笔记(11)-- 文件读写操作-在内部存储空间中读写文件
2016-01-20 19:24
706 查看
在内部存储空间中读写文件(不需要)
小案例:用户输入账号密码,勾选“记住账号密码”,点击登录按钮,登录的同时持久化保存账号和密码1. 定义布局
2. 完成按钮的点击事件
弹土司提示用户登录成功
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
3. 拿到用户输入的数据
判断用户是否勾选保存账号密码
CheckBox cb = (CheckBox) findViewById(R.id.cb); if(cb.isChecked()){ }
4. 开启io流把文件写入内部存储
直接开启文件输出流写数据
//持久化保存数据 File file = new File("data/data/com.exp.rwinrom/info.txt"); FileOutputStream fos = new FileOutputStream(file); fos.write((name + "##" + pass).getBytes()); fos.close();
读取数据前先检测文件是否存在
if(file.exists())
读取保存的数据,也是直接开文件输入流读取
File file = new File("data/data/com.exp.rwinrom/info.txt"); FileInputStream fis = new FileInputStream(file); //把字节流转换成字符流 BufferedReader br = new BufferedReader(new InputStreamReader(fis)); String text = br.readLine(); String[] s = text.split("##");
读取到数据之后,回显至输入框
et_name.setText(s[0]); et_pass.setText(s[1]);
应用只能在自己的包名目录下创建文件,不能到别人家去创建
使用路径api读写文件
getFilesDir()得到的file对象的路径是data/data/com.exp.rwinrom2/files存放在这个路径下的文件,只要你不删,它就一直在
getCacheDir()得到的file对象的路径是data/data/com.exp.rwinrom2/cache
存放在这个路径下的文件,当内存不足时,有可能被删除
系统管理应用界面的清除缓存,会清除cache文件夹下的东西,清除数据,会清除整个包名目录下的东西
//返回一个File对象,其路径是data/data/com.exp.apirwinrom/files File file = new File(getFilesDir(), "info.txt"); //返回值也是一个File对象,其路径是data/data/com.exp.apirwinrom/cache File file = new File(getCacheDir(), "info.txt");
注意:此时不需要权限
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import org.apache.http.entity.InputStreamEntity;
import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText et_name;
private EditText et_pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_name = (EditText) findViewById(R.id.et_name);
et_pass = (EditText) findViewById(R.id.et_pass);
readAccount();
}
//读取内容
public void readAccount(){
//File file = new File("data/data/com.exp.rwinrom/info.txt");
File file = new File(getFilesDir(), "info.txt");
if(file.exists()){
try {
FileInputStream fis = new FileInputStream(file);
//把字节流转换成字符流
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
//读取txt文件里的用户名和密码
String text = br.readLine();
String[] s = text.split("##");
et_name.setText(s[0]); et_pass.setText(s[1]);} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void login(View v){
String name = et_name.getText().toString();
String pass = et_pass.getText().toString();
CheckBox cb = (CheckBox) findViewById(R.id.cb);
//判断选框是否被勾选
if(cb.isChecked()){
//data/data/com.exp.rwinrom:这就是内部存储空间的路径
//File file = new File("data/data/com.exp.rwinrom/info.txt");
File file = new File(getFilesDir(), "info.txt");
FileOutputStream fos;
try {
fos = new FileOutputStream(file);
fos.write((name + "##" + pass).getBytes());
fos.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//创建并显示吐司对话框
Toast.makeText(this, "登录成功", 0).show();
}
}
相关文章推荐
- Android Manifest.xml详解
- zhu的工作日记:带移动提示的seekBar的Demo(android)
- android WindowManager解析与骗取QQ密码案例分析
- 布局细节问题
- Android :我的奇怪BUG:WindowManager$BadTokenException
- Android :我的奇怪BUG:WindowManager$BadTokenException
- achartengine与Android中ScrollView的冲突问题
- 将外部sqlite3数据库导入到Android项目中(android studio)
- Android开机广播
- Android点击空白处,隐藏软键盘
- Android监听ListView停止的时候是不是滑动到底部
- android :使用swipment(侧滑)时,listview 内容重叠。
- Android 开发中踩过的坑之八:多进程问题
- android 自定义提示框效果(2)
- Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析
- Android学习笔记—Windows下NDK开发简单示例
- Android studio添加依赖库
- 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
- 第一次使用Android Studio时你应该知道的一切配置(二):新建一个属于自己的工程并安装Genymotio...
- Android软件开发之获取通讯录联系人信息 + android联系人信息的存储结构 + Android联系人读取操作笔记