`

文件的保存

 
阅读更多
常用文件路径:
getFilesDir();
/data/data/包名/files
getCacheDir();
/data/data/包名/cache
openFileInput("itheima.txt");
/data/data/包名/files/itheima.txt
openFileOutput("itheima.txt", Context.MODE_PRIVATE); 

 

public class MainActivity extends Activity {
	private static final String Tag = "MainActivity";
	private EditText et_qq;
	private EditText et_pwd;
	private CheckBox cb_remember;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//查询关心的控件
		et_qq = (EditText) findViewById(R.id.et_qq);
		et_pwd = (EditText) findViewById(R.id.et_pwd);
		cb_remember = (CheckBox) findViewById(R.id.cb_remember);
		Log.i(Tag,"oncreate 被调用");
		//完成数据的回显。
		readSavedData();
	}
	//读取保存的数据
	private void readSavedData() {
		// getFilesDir() == /data/data/包名/files/  获取文件的路径 一般系统是不会清理的。 用户手工清理,系统会有提示。
		// getCacheDir()==  /data/data/包名/cache/ 缓存文件的路径 当系统内存严重不足的时候 系统会自动的清除缓存 用户手工清理系统没有提示
		File file = new File(getFilesDir(),"info.txt");
		if(file.exists()&&file.length()>0){
			try {
				//FileInputStream fis = new FileInputStream(file);
				FileInputStream fis =this.openFileInput("info.txt");
				BufferedReader br = new BufferedReader(new InputStreamReader(fis));
				//214342###abcdef
				String info = br.readLine();
				String qq = info.split("###")[0];
				String pwd = info.split("###")[1];
				et_qq.setText(qq);
				et_pwd.setText(pwd);
				fis.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 登陆按钮的点击事件,在点击事件里面获取数据
	 * @param view
	 */
	public void login(View view){
		String qq = et_qq.getText().toString().trim();
		String pwd = et_pwd.getText().toString().trim();
		if(TextUtils.isEmpty(qq)||TextUtils.isEmpty(pwd)){
			Toast.makeText(this, "qq号码或者密码不能为空", 0).show();
			return;
		}
		//判断用户是否勾选记住密码。
		if(cb_remember.isChecked()){
			//保存密码
			Log.i(Tag,"保存密码");
			try {
//				File file = new File(getFilesDir(),"info.txt");
//				FileOutputStream fos = new FileOutputStream(file);
				FileOutputStream fos = this.openFileOutput("info.txt", 0);
				//214342###abcdef
				fos.write((qq+"###"+pwd).getBytes());
				fos.close();
				Toast.makeText(this, "保存成功", 0).show();
			} catch (Exception e) {
				e.printStackTrace();
				Toast.makeText(this, "保存失败", 0).show();
			}
		}else{
			//无需保存密码
			Log.i(Tag,"无需保存密码");
		}
	}
}

 

 

 

File file = new File(Environment.getExternalStorageDirectory(),"info.txt");
获取得到的目录:mnt/data、sdcard|sdcard0...  厂商的不遵守规范导致获取得到的路径可能是虚拟的路径。
检测sd卡的状态:
String status = Environment.getExternalStorageState();
		if(Environment.MEDIA_MOUNTED.equals(status)){
			//判断sd卡的可用空间
			File file = Environment.getExternalStorageDirectory();
			long freespace = file.getFreeSpace();//bytes
			String info = Formatter.formatFileSize(this, freespace);
			Toast.makeText(this, "sd卡可用,剩余空间:"+info, 0).show();
		}else{
			Toast.makeText(this, "sd卡不可用,不可以读写数据", 0).show();
		}

SharedPreferences生成一个xml布局文件

 

 

  • 大小: 28.2 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics