_036_Android_将数据保存到 应用程序中(私有的)

保存 数据 出现 异常 :

是因为 , 这里的 路径 以及 保存的方式 都 有问题 , 目前是运行 在androd中, android底层 是linux内核, linux 文件系统

是根目录是 一个 /  

写 File  file = new File(“info.txt”);  ---将数据 保存 到  linux  根目录/ 下, 而这时  当前的应用程序 不可能取得这样的权限的.

每个应用程序 可以 将数据 保存到 自己 独有的一个 文件 夹 下

 

public class MainActivity extends AppCompatActivity {

    private Button loginBtn;
    private EditText userNameET;
    private EditText passwordET;
    private CheckBox rememberCB;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //初始化控件
        loginBtn=findViewById(R.id.loginBtn);
        userNameET=findViewById(R.id.userNameET);
        passwordET=findViewById(R.id.passwordET);
        rememberCB=findViewById(R.id.rememberCB);

        File file = new File("/data/data/com.lfz.qqlogin/info.txt");

        if(file.exists()&&file.length()>0){
            BufferedReader reader = null;
            try {
                reader = new BufferedReader(new FileReader(file));
                String s = reader.readLine();

                String[] split = s.split("#");
                userNameET.setText(split[0]);
                passwordET.setText(split[1]);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    reader.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        loginBtn.setOnClickListener(new MyOnClickListener());

    }

    //登录的方法
    public void login(){
        String userName = userNameET.getText().toString().trim();
        String password = passwordET.getText().toString().trim();

        //判断是否已经输入了用户名和密码
        if(TextUtils.isEmpty(userName)||TextUtils.isEmpty(password)){
            Toast.makeText(this,"请输入qq号码和密码",Toast.LENGTH_SHORT).show();
            return;
        }

        //判断是否已经勾选了checkbox,如果已经勾选了则保存userName和password
        boolean checked = rememberCB.isChecked();
       if(checked){
           //保存数据
           OutputStream os = null;
           try {
               File file = new File("/data/data/com.lfz.qqlogin/info.txt");
               os = new FileOutputStream(file);
               String value=userName+"#"+password;
               os.write(value.getBytes());
               System.out.println("hello");
               Toast.makeText(this,"勾选了,保存成功!",Toast.LENGTH_SHORT).show();
           } catch (IOException e) {
               e.printStackTrace();
           } finally {
               if(os!=null){
                   try {
                       os.close();
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }
           }
       }else{
           Toast.makeText(this,"未勾选",Toast.LENGTH_SHORT).show();
       }
    }

    private class MyOnClickListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            int id = v.getId();
           if(id==R.id.loginBtn){
               login();
           }
        }
    }
}

请 设计 一下 android中 图片的缓存策略, 保存到 设备 中 :

每个应用都有自己的 保存数据的文件夹,  有 cache 和 files文建这里 可以去保存 应用运行 时 需要一些数据 .

举例 , 一个新闻客户端, 如果 现在网络不可以用, 那么 就默认的情况下给用户显示缓存 cache 文件夹下的数据 。

如果网络可以用,那么就 提示 用户 当前 互联网上服务器的最新的数据 有 多少条,

然后 让用户去选择是否 更新 数据,如果不选择更新, 那么就 不更新,

如果选择更新, 那么就将 缓存cache 文件夹的数据给覆盖掉, 这样就可以 设计一套比较合理的缓存策略.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值