文件存储的几种方式
- 存储在手机内部空间,路径是data/data/项目的包名
- 存储在SDK中,路径有三个,现在的位置在storage/sdcard
- 使用sharedpreferences进行文件的存储,路径是data/data/包名/shared_prefs
1.将文件保存在手机内部空间
public class MainActivity extends Activity{
private EditText user;
private EditText psw;
private Button bt;
private FileOutputStream fos ;
private FileInputStream fis;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user = (EditText)findViewById(R.id.user1);
psw = (EditText)findViewById(R.id.psw1);
bt = (Button) findViewById(R.id.bt);
//路径是data/data/包名
final File file = new File(getFilesDir(),"test.txt");
//读取数据
if(file.exists()){
try {
fis = new FileInputStream(file);
//把字节流转成字符流
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
//读取文件
String text = br.readLine();
String[] s = text.split("##");
user.setText(s[0]);
psw.setText(s[1]);
} catch (Exception e) {
e.printStackTrace();
}
}
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//写入数据
try {
String usert = user.getText().toString();
String pswt = psw.getText().toString();
fos = new FileOutputStream(file);
fos.write((usert+"##"+pswt).getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
2.将文件保存在SDK中(要取得android权限)
public class MainActivity extends Activity{
private EditText user;
private EditText psw;
private Button bt;
private FileOutputStream fos ;
private FileInputStream fis;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user = (EditText)findViewById(R.id.user1);
psw = (EditText)findViewById(R.id.psw1);
bt = (Button) findViewById(R.id.bt);
//使用API获取sdcard路径
final File file = new File(Environment.getExternalStorageDirectory(),"test.txt");
//读取数据
if(file.exists()){
try {
fis = new FileInputStream(file);
//把字节流转成字符流
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
//读取文件
String text = br.readLine();
String[] s = text.split("##");
user.setText(s[0]);
psw.setText(s[1]);
} catch (Exception e) {
e.printStackTrace();
}
}
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//写入数据
try {
String usert = user.getText().toString();
String pswt = psw.getText().toString();
fos = new FileOutputStream(file);
fos.write((usert+"##"+pswt).getBytes());
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
3.以sharedpreferences方式存储数据
public class MainActivity extends Activity{
private EditText user;
private EditText psw;
private Button bt;
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
user = (EditText)findViewById(R.id.user1);
psw = (EditText)findViewById(R.id.psw1);
bt = (Button) findViewById(R.id.bt);
//使用私有的方式存储和读取数据
sharedPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);
//使文件处于可编辑状态
editer = sharedPreferences.edit();
//读取数据
user.setText(sharedPreferences.getString("user",""));
psw.setText(sharedPreferences.getString("psw",""));
//点击进行存储
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//写入数据
editer.putString("user",user.getText().toString());
editer.putString("psw",user.getText().toString());
editer.commit();//进行保存操作
}
});
}
}
通常sharedPreferences用来存储登录数据,但是这很不安全,需要进行一些相关的加密!!