在Android中读写文件
手机的存储结构:
- RAM:运行内存,相当于电脑的内存
- ROM:内部存储空间,相当于电脑的硬盘
SD存储卡:外部存储空间,相当于电脑的移动硬盘
内部存储路径所有安装至手机的应用都会在data/data目录下生成一个包名文件夹,这个文件夹就是内部存储的路径(内部存储不用权限)。
示例代码如下(XML文件省略,这个将登陆信息写到文件中)
package com.linsen.writefile;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.os.Build;
public class MainActivity extends Activity {
EditText et_username; //定义用户名
EditText et_password; //定义密码
CheckBox cb_remember; //定义文本框
Button bt_login; //定义登录按钮
FileOutputStream fos; //定义输出流
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_writefile);
et_username = (EditText) findViewById(R.id.et_username);
et_password = (EditText) findViewById(R.id.et_password);
bt_login = (Button) findViewById(R.id.bt_login);
//点击登录按钮,登录事件
bt_login.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//获取到用户名和密码
String username = et_username.getText().toString();
String password = et_password.getText().toString();
cb_remember = (CheckBox) findViewById(R.id.cb_remember);
//如果文本框被选中,保存用户名和密码
if(cb_remember.isChecked()){
File file = new File("data/data/com.linsen.writefile/userinfo.txt");
try {
fos = new FileOutputStream(file);
fos.write((username + "&&" + password).getBytes());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
if(fos != null){
fos.close();
fos = null;
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
});
}
}