Android数据存储通用策略

 * @param context 当前上下文

 * @param fileName 存储文件名

 * @param Mode  一般为Context.MODE_PRIVATE

 * @return SharedPreferences对象

 */

public static SharedPreferences getSharedPreferences(Context context,String fileName,int Mode) {

    return context.getSharedPreferences(fileName,Context.MODE_PRIVATE);

}





/**

 * @param context 当前上下文

 * @param fileName 存储文件名

 * @param Mode 一般为Context.MODE_PRIVATE

 * @return SharedPreferences.Editor对象

 */

public static SharedPreferences.Editor getEditor(Context context,String fileName,int Mode){

    return getSharedPreferences(context,fileName,Mode).edit();

}

}




  



FileStore,封装了文件读写的基本操作,包括本地和SDcard



package com.example.yummy.tools;

import android.content.Context;

import android.os.Environment;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

/**

  • Created by yummy on 2015/9/28.

  • 采用File文件存储,包括两种

    1. 保存在/data/data下,一般这种比较少
    1. 保存在sdcard下,比较常用
  • 策略:一般配置文件可以写在Sharedpre,大的文件一般存在sd卡,关系比较紧密/复杂的关联信息写在Sqlite

  • 这里的文件保存对象String,如下载的一般都是流,如复制的一般是file,操作大同小异,工具类可以自己改写

*/

public class FileStore {

/**

 * 保存在/data/data/<packagename>/files中

 * @param data 目标字符串

 * @param fileName 保存文件名

 * @param Mode 写入模式,一共有三种

 * @return 返回操作是否成功

 * MODE_PRIVATE、MODE_APPEND 和 MODE_ENABLE_WRITE_AHEAD_LOGGING

 * 第一种为默认操作模式,表示写入文件的时候会覆盖原文件内容

 * 第二种为追加内容模式,表示写入文件的时候把内容追加在文件后面

 */

public static boolean writeToFile(Context context,String data,String fileName,int Mode){



    FileOutputStream out = null;

    BufferedWriter writer = null;

    try {

        out = context.openFileOutput(fileName, Context.MODE_ENABLE_WRITE_AHEAD_LOGGING);

        writer = new BufferedWriter(new OutputStreamWriter(out));

        writer.write(data);

        return true;

    }catch (IOException e) {

        e.printStackTrace();

    }finally

    {

        try {

            if(writer != null) {

                writer.close();

            }

        }catch (IOException e){

            e.printStackTrace();

        }

    }

    return false;

}



/**

 *读取的文件位于保存在/data/data/<packagename>/files中

 * @param context 返回内容

 * @param fileName 读取文件的文件名

 * @return 返回文件内容

 */

public static String readByFile(Context context,String fileName){



    FileInputStream in = null;

    BufferedReader reader = null;

    StringBuilder content = new StringBuilder();

    try{

        in = context.openFileInput(fileName);

        reader = new BufferedReader(new InputStreamReader(in));

        String line = null;

        while((line = reader.readLine())!=null){

            content.append(line);

        }

    }catch (IOException e){

        e.printStackTrace();

    }finally {

        if(reader != null){

            try{

              reader.close();

            }catch (IOException e){

                e.printStackTrace();

            }

        }

    }

    return content.toString();

}







/**

 * 判断SdCard是否存在

 * 操作sd卡需要的权限

 * <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>

 * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

 * @param fileName 待写文件名

 * @param filecontent 写入内容

 * @return 返回操作是否成功

 */

public static boolean witreToSdcard(String fileName,String filecontent) {



    FileOutputStream out = null;

    BufferedWriter writer = null;

    File file = null;

    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {

        try {

            //这里为SD卡根目录,可以自行更改file路径

            file = new File(Environment.getExternalStorageDirectory().toString()+'/'+fileName);

            out = new FileOutputStream(file);

            writer = new BufferedWriter(new OutputStreamWriter(out));

            writer.write(filecontent);

            return true;

        }catch (FileNotFoundException e){

            e.printStackTrace();

        }catch (IOException e){

            e.printStackTrace();

        } finally {

            try {

                if (writer != null) {

                    writer.close();

                }

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

    return false;

}





/**

 * 读取sdcard的文件

 * @param fileName

 * @return 返回文件内容

 */

public static String readBySdcard(String fileName){



    FileInputStream in = null;

    BufferedReader reader = null;

    StringBuilder content = new StringBuilder();

    File file = null;

    try{

        file = new File(Environment.getExternalStorageDirectory().toString()+'/'+fileName);

        in = new FileInputStream(file);

        reader = new BufferedReader(new InputStreamReader(in));

        String line = null;

        while((line = reader.readLine()) != null){

            content.append(line);

        }

    }catch (FileNotFoundException e){

        e.printStackTrace();

    }catch (IOException e){

        e.printStackTrace();

    }finally {

        if(reader != null){

            try{

                reader.close();

            }catch (IOException e){

                e.printStackTrace();

            }

        }

    }

    return content.toString();

}

}


  

SQLite,封装了基本的数据库操作,我仅用来了解熟悉Android提供的API功能,实际项目中不推荐使用,推荐使用ORM框架  



package com.example.yummy.tools;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.DatabaseErrorHandler;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

/**

  • 该SQLiteStore类只是简单的介绍了SQLite核心的功能,包括CRUD以及升级策略,API含有大量函数可以直接源码参考

  • 实际应用中,如果CRUD一般都会转化层bean类的形式操作,一般整个过程可以设计,写接口等

  • 不过Android提供了十分好用的ORM开源框架来简化数据库操作

  • 常用有:greenDAO / ORMLite 强烈推荐这两个

  • Created by yummy on 2015/9/29.

*/

public class SQLiteStore {

class MyDatabaseHelper extends SQLiteOpenHelper{



    //定义sql语句

    public static final String CREATR_TABLE_1 = "一般定义建表的sql语句";

    private SQLiteDatabase reader;

    private SQLiteDatabase writer;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值