* @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文件存储,包括两种
-
- 保存在/data/data下,一般这种比较少
-
- 保存在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;