还剩两个月,时间不多,决定这段时间每天都做一下总结,把每天的新知识点都归纳起来.
Android下的数据读写
Android中输入输出
- 从文件里面读取数据
- 把数据写到文件
android下应用程序的路径和javase不同,应用程序的路径要保存在自己的文件夹里面.
getFileDir();获取自己的文件夹/data/data/包名/files
getCacheDir();获取自己的文件夹/data/data/包名/cache
Android给我们提供了两种应用程序的目录:
- files目录存放重要的应用程序数据,手机不会自动清理files目录中的文件
- cache目录是存放临时的不重要的数据,这个目录有个特点,当手机内存空间不足时,会自动清理cache中目录的文件
手机存储空间的划分
-
手机的内部存储(访问手机内部存储空间方法:Environment.getDataDirectory();)
- file目录
- cache目录
手机的外部存储(访问手机外部存储空间方法:Environment.getExternalStorageDirectory();)
登录界面模拟代码
public void onCreat(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText text = (EditText) findViewById(R.id.Text);
EditText textpassword = (EditText) findViewById(R.id.TextPassword);
CheckBox cb = (CheckBox) findViewById(R.id.checkBox);
readinfo();
}
public void onCick(View v){
int i=0;
//获取账户并复制给一个字符串
String text = text.getText().toString.trim();
String password = text.getText().toString.trim();
//假如用户输入为空我们就先做一个判断并提醒用户没有输入
//TextUtils.isEmpty(text)=="".equals(text):此方法就是判断是否为空字符串,为空就返回
if(TextUtils.isEmpty(text))||TextUtils.isEmpty(password)){
Toast.makeText(this,"请输入用户名及密码",Toast.LENGTH_LONG).show();
}else {
//判断是否需要记录用户名与密码
//cb.isChecked():此方法判断选项框是否被选中
if (cb.isChecked()) {//被选中状态,需要记录用户名和密码
//创建一个文件,并取一个名字
try {
File file = new File("/data/data/com.example.Test04_store/info.txt");
//写数据需要一个文件输出流,并把创建的文件传入流中
//因为是在Android中,所以这个地方要写入android中的全路径才能执行
FileOutputStream fos = new FileOutputStream(file);
//然后把账户名与命名拼接到一个数据中,方便存储:100000##123456String
info = Text + "##" + password;
//然后把封装后的数据写入到文件中
fos.write(info.getBytes());
//关闭流
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//判断登录密码正确还是错误
if ("100000".equals(qq) && "123456".equals(password)) {
Toast.makeText(this, "send true", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "send false", Toast.LENGTH_LONG).show();
}
}
}
// 根据原来的保存的数据取出来,并显示在界面中
public void readinfo(){
//得到这个文件
File file = new File("/data/data/com.example.Test04_store/info.txt");
//判断这个文件是否存在,是否有数据
if(file.exists()&&file.length()>0){
try {
FileInputStream fis = new FileInputStream(file);
//这时我们只读一行,用BufferedReader包装一下
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String info = br.readLine();
//下面得到一个数组,数组第一个元素为帐户名,第二个元素为密码
String qq = info.split("##")[0];
String password = info.split("##")[1];
//把帐户名和密码回显到界面中
text.setText(qq); t
extpassword.setText(password);
} catch (IOException e) {
e.printStackTrace();
}
}
}