IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 使用Android文件存储保存和提取账号密码 -> 正文阅读

[移动开发]使用Android文件存储保存和提取账号密码

文件存储

文件存储是Android中最基本的一种数据存储方式,其与java中的文件存储类似,都是通过I/O流的形式把数据直接存储到文件中。

内部存储使用的是Context提法的openFileOutput()方法和openFileInput()方法,这两个方法能够返回进行读写操作的FileOutputStream和FileInputStream对象。
openFileOutput():用于打开应用程序中对应的输出流,将数据存储到指定的文件中
openFileInput():用于打开应用程序对应的输入流,读取指定文件的数据

他们的参数"name"表示文件名,"mode"表示文件的操作模式,也就是读写文件的方式

mode的值有四种:

  • MODE_PRIVATE:该文件只能被当前程序读写
  • MODE_APPEND:该文件的内容可以追加
  • MODE_WORLD_READABLE:该文件的内容可以被其他程序读
  • MODE_WORLD_WRITEABLE:该文件的内容可以被其他程序写

Android有一套自己的安全模型,默认清空下任何应用创建的文件都是私有的,其他程序无法访问。

创建工具类UserInfo

public class UserInfo {
    public static boolean saveData(String name, String pwd, Context context){
        String msg;
        //获取文件输入流对象fos
        FileOutputStream fos=null;
        try {
            fos=context.openFileOutput("MyData.txt",Context.MODE_PRIVATE);
            msg=name+";"+pwd;
            //将数据转换成字节码的形式写入MyData.txt中
            fos.write(msg.getBytes());
            return true;
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }finally {
            try {
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public static Map<String,String> getData(Context context){
     Map<String,String> map=new HashMap<String, String>();
        FileInputStream fis=null;
        try {
        //获取文件输入流对象fis
            fis=context.openFileInput("MyData.txt");
            //将输入流对象中的数据转换为字节码的形式
            byte[] bytes=new byte[fis.available()];
            //通过read方法读取数据
            fis.read(bytes);
            String msg=new String(bytes);
            //将字符串以”;”分割后形成一个数组的形式
            String[] info=msg.split(";");
            //将数组中的第一个数据放入集合中
            map.put("name",info[0]);
            //将数组中的第二个数据放入集合中
            map.put("pwd",info[1]);
            return map;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

编写界面交互代码

public class MainActivity extends AppCompatActivity {
    private EditText et_name,et_pwd;
    private Button bt_save,bt_get;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        et_name=findViewById(R.id.et_name);
        et_pwd=findViewById(R.id.et_pwd);
        bt_get=findViewById(R.id.bt_get);
        bt_save=findViewById(R.id.bt_save);

        bt_save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String saveName=et_name.getText().toString();
                String savePwd=et_pwd.getText().toString();
                if (UserInfo.saveData(saveName,savePwd,MainActivity.this))
                    Toast.makeText(MainActivity.this,"保存成功",Toast.LENGTH_SHORT).show();
            }
        });

        bt_get.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Map<String, String> map=new HashMap<String, String>();
                map=UserInfo.getData(MainActivity.this);
                String findName=map.get("name");
                String findPwd=map.get("pwd");
                et_name.setText(findName);
                et_pwd.setText(findPwd);
            }
        });
    }
}
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:19:40  更:2021-08-04 11:19:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/5 19:42:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码