Android 中保存数据到文件中

时间:2024-02-25 22:18:57

1、在安卓开发中,会遇到保存数据到手机中以及从手机中获取数据的情况

/**
     * 把数据存放到手机内存中
     * 
     * @param number
     * @param password
     * @return
     */
    public static boolean saveUserInfo(Context context, String number,
            String password) {

        try {

            // getCacheDir()方法用于获取/data/data/<package name>/cache目录 缓存数据
            // getFilesDir()方法用于获取/data/data/<package name>/files目录

            // 定义路径
            // String path = "/data/data/com.example.qqlogin/qqlogin.txt";

            File filesDir = context.getFilesDir();
            // 动态获得路径
            File file = new File(filesDir, "qqlogin.txt");

            // 输出流,把数据输出到文件中
            FileOutputStream fos = new FileOutputStream(file);
            // 要写入的数据
            String data = number + "##" + password;

            // 写入字节流
            fos.write(data.getBytes());

            // 清空缓存
            fos.flush();
            // 关闭流
            fos.close();

            return true;
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return false;
    }

    /**
     * 从文件中读取数据,并返回出去
     * 
     * @return
     */
    public static Map<String, String> getUserInfo(Context context) {
        // String path = "/data/data/com.example.qqlogin/qqlogin.txt";
        // 动态获取文件名
        File filesDir = context.getFilesDir();
        // 动态获得路径
        File f = new File(filesDir, "qqlogin.txt");

        try {
            // 从文件中读取流
            // FileInputStream fis = new FileInputStream(path);
            FileInputStream fis = new FileInputStream(f);
            // 把字节流 转换为 字符串流
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    fis));
            String text = reader.readLine();
            if (!TextUtils.isEmpty(text)) {
                String[] spilt = text.split("##");
                Map<String, String> userInfoMap = new HashMap<String, String>();
                userInfoMap.put("number", spilt[0]);
                userInfoMap.put("password", spilt[1]);
                return userInfoMap;
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

2、通过SharedPreferences 向手机中写入数据

/**
     * 把数据存放到手机内存中
     * 
     * @param number
     * @param password
     * @return
     */
    public static boolean saveUserInfo(Context context, String number,
            String password) {
        try {

            // 文件保存在 /data/data/包名/shared_prefs/itheima28
            SharedPreferences sp = context.getSharedPreferences("aa",
                    context.MODE_PRIVATE);

            // 获得一个编辑对象
            Editor ed = sp.edit();

            // 存放数据
            ed.putString("number", number);
            ed.putString("password", password);
            // 提交数据
            ed.commit();
            return true;

        } catch (Exception e) {

        }

        return false;
    }

    /**
     * 从文件中读取数据,并返回出去
     * 
     * @return
     */
    public static Map<String, String> getUserInfo(Context context) {

        try
        {
        // 文件保存在 /data/data/包名/shared_prefs/itheima28
        SharedPreferences sp = context.getSharedPreferences("aa",context.MODE_PRIVATE);        
        String number=sp.getString("number", null);
        String password=sp.getString("password", null);
        
        Map<String,String>  userInfoMap=new HashMap<String, String>();
        userInfoMap.put("number", number);
        userInfoMap.put("password",password);
        return  userInfoMap;    
        }
        catch(Exception e)
        {
            
        }
        
        return null;
    }