您的位置:首页 > 移动开发 > Android开发

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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: