Android数据持久化工具类总结
发布时间:2020-05-24 21:28:53 所属栏目:Java 来源:互联网
导读:Android数据持久化工具类总结
|
下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。 脚本之家小编现在分享给大家,也给大家做个参考。 总结了几个除处理sqlite外的几个工具类,因为sqlite可以直接用orm,持久化数据有I/O,SharedPreference等等方式。外置储存卡 import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import android.os.Environment;
/**
* 外部存儲卡工具类
* 需要添加权限
* android.permission.WRITE_EXTERNAL_STORAGE
* android.permission.MOUNT_UNMOUNT_FILESYSTEMS
*
* @author lizhangqu
* @version 1.0
*
*/
public class ExternalStorageUtil {
/**
* 是否可写
*
* @return 可写性
*/
public static boolean isExternalStorageWritable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
return true;
}
return false;
}
/**
* 是否可读
*
* @return 可读性
*/
public static boolean isExternalStorageReadable() {
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)
|| Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
return true;
}
return false;
}
/**
* 获得根路径
*
* @return 外置内存卡根路径
*/
public static String getExternalStoragePath() {
if (isExternalStorageWritable())
return Environment.getExternalStorageDirectory().getAbsolutePath();
else
return null;
}
/**
* 获得下载目录路径
*
* @return 外置内存卡下载路径
*/
public static String getExternalDownloadPath() {
return Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
}
/**
* 向根路径写文件
*
* @param fileName 文件名
* @param content 上下文
* @return 是否写入成功
*/
public static boolean write(String fileName,String content) {
return write("/",fileName,content);
}
/**
* 向根目录写字节
*
* @param fileName 文件名
* @param bytes 文件字节数组
* @return 是否写入成功
*/
public static boolean writeBytes(String fileName,byte[] bytes) {
return writeBytes("/",bytes);
}
/**
* 向指定目录的文件中写入字符串,路径以/开始/结尾
*
* @param path 相对于根路径的路径,路径以/开始,以/结尾
* @param fileName 文件名
* @param content 文件内容
* @return 是否写入成功
*/
public static boolean write(String path,String fileName,String content) {
return writeBytes(path,content.getBytes());
}
/**
* 向指定目录的文件写入字节数组,路径以/开始/结尾
*
* @param path 相对于根路径的路径,路径以/开始,以/结尾
* @param fileName 文件名
* @param bytes 字节数组
* @return
*/
public static boolean writeBytes(String path,byte bytes[]) {
boolean flag = false;
if (!path.equals("/")) {
File dir = new File(getExternalStoragePath() + path);
if (!dir.exists()) {
if (!(dir.mkdir() || dir.isDirectory())) {
// 文件目录创建失败或者不是一个目录
return false;
}
}
}
File file = new File(getExternalStoragePath() + path + fileName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(file,false);
fos.write(bytes);
flag = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
/**
* 从根路径读字节
*
* @param fileName 文件名
* @return 字节数组
*/
public static byte[] readBytes(String fileName) {
return readBytes("/",fileName);
}
/**
* 从指定目录读字节,路径以/开始/结尾
*
* @param path 相对于根路径的路径,路径以/开始,以/结尾
* @param fileName 文件名
* @return 字节数组
*/
public static byte[] readBytes(String path,String fileName) {
File file = new File(getExternalStoragePath() + path + fileName);
if (!file.isFile()) {
return null;
} else {
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
int length = fis.available();
byte[] buffer = new byte[length];
fis.read(buffer);
return buffer;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
}
/**
* 从根目录读文本
*
* @param fileName 文件名
* @return 字符串
*/
public static String read(String fileName) {
return read("/",fileName);
}
/**
* 从指定目录读文本,路径以/开始/结尾
*
* @param path 相对于根路径的路径,路径以/开始,以/结尾
* @param fileName 文件名
* @return 字符串
*/
public static String read(String path,String fileName) {
try {
byte[] readBytes = readBytes(path,fileName);
if (readBytes == null) {
return null;
}
return new String(readBytes,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return null;
}
/**
* 从根目录删除
*
* @param fileName 文件名
* @return 是否删除成功
*/
public static boolean delete(String fileName) {
return delete("/",fileName);
}
/**
* 从指定目录删除,路径以/开始/结尾
*
* @param path 相对于根路径的路径,路径以/开始,以/结尾
* @param fileName 文件名
* @return 是否删除成功
*/
public static boolean delete(String path,String fileName) {
File file = new File(getExternalStoragePath() + path + fileName);
if (file.exists())
return file.delete();
else
return true;
}
}
内置储存卡 import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import android.content.Context;
/**
* 內部存儲卡工具类
*
* @author lizhangqu
* @version 1.0
*/
public class InternalStorageUtil {
/**
* 在原文件后追加内容
*
* @param context 上下文
* @param fileName 文件名
* @param content 追加的文本
* @return 是否追加成功
*/
public static boolean append(Context context,String content) {
return writeBytes(context,content.getBytes(),true);
}
/**
* 写入文件,文件存在则覆盖
*
* @param context 上下文
* @param fileName 文件名
* @param content 写入的文本
* @return 是否写入成功
*/
public static boolean write(Context context,false);
}
/**
* 写入字节
*
* @param context 上下文
* @param fileName 文件名
* @param content 写入的字节
* @return 是否写入成功
*/
public static boolean writeBytes(Context context,byte[] content) {
return writeBytes(context,content,false);
}
/**
* 写入文件,文件存在时根据参数isAppend判断是否覆盖
*
* @param context 上下文
* @param fileName 文件名
* @param content 写入的字节
* @param isAppend 是否追加
* @return 是否写入成功
*/
public static boolean writeBytes(Context context,byte[] content,boolean isAppend) {
FileOutputStream fout = null;
boolean flag = false;
try {
if (isAppend) {
fout = context.openFileOutput(fileName,Context.MODE_APPEND);
} else {
fout = context.openFileOutput(fileName,Context.MODE_PRIVATE);
}
fout.write(content);
flag = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fout != null) {
fout.close();
fout = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
return flag;
}
/**
* 读取文件
*
* @param context 上下文
* @param fileName 文件名
* @return 文件内容的字符串
*/
public static String read(Context context,String fileName) {
byte[] buffer = readBytes(context,fileName);
String result=null;
try {
result = new String(buffer,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
/**
* @param context 上下文
* @param fileName 文件名
* @return 字节数组
*/
public static byte[] readBytes(Context context,String fileName) {
FileInputStream fin = null;
byte[] buffer = null;
try {
fin = context.openFileInput(fileName);
int length = fin.available();
buffer = new byte[length];
fin.read(buffer);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (fin != null) {
fin.close();
fin = null;
}
} catch (IOException e) {
e.printStackTrace();
}
}
return buffer;
}
/**
* 清除所有文件,当有一个文件未清除时返回false
*
* @param context 上下文
* @return 是否清楚成功
*/
public static boolean clear(Context context) {
boolean flag = true;
String[] files = context.fileList();
for (String fileName : files) {
boolean result = context.deleteFile(fileName);
if (result == false) {
flag = false;
}
}
return flag;
}
/**
* 根据文件名清除文件
*
* @param context 上下文
* @param fileName 文件名
* @return 是否删除成功
*/
public static boolean delete(Context context,String fileName) {
return context.deleteFile(fileName);
}
/**
* 返回内部存储的绝对路径
*
* @param context 上下文
* @return app内置文件夹路径
*/
public static String getFileDir(Context context) {
File filesDir = context.getFilesDir();
return filesDir.getAbsolutePath();
}
}
资源文件的读取 import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import android.content.Context;
/**
* assert资源的读取
*
* @author lizhangqu
* @version 1.0
*/
public class ResouceFileUtil {
/**
* 从assert文件夹下读取文本资源
*
* @param context 上下文
* @param fileName 文件名
* @return 文件内容字符串
*/
public static String readStringFromAssert(Context context,String fileName) {
String result = null;
byte[] buffer = readBytesFromAssert(context,fileName);
try {
result = new String(buffer,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
/**
* 从raw文件夹下读取文本资源
*
* @param context 上下文
* @param rawId raw资源id
* @return 文件内容字符串
*/
public static String readStringFromRaw(Context context,int rawId) {
String result = null;
byte[] buffer = readBytesFromRaw(context,rawId);
try {
result = new String(buffer,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result;
}
/**
* 从assert文件夹下读取文件到字节数组
*
* @param context 上下文
* @param fileName 文件名
* @return 文件字节数组
*/
public static byte[] readBytesFromAssert(Context context,String fileName) {
InputStream is = null;
byte[] buffer = null;
try {
is = context.getAssets().open(fileName);
int size = is.available();
buffer = new byte[size];
is.read(buffer);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
is = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
return buffer;
}
/**
* 从raw文件夹下读取文件到字节数组
*
* @param context 上下文
* @param rawId raw资源id
* @return 文件字节数组
*/
public static byte[] readBytesFromRaw(Context context,int rawId) {
InputStream is = null;
byte[] buffer = null;
try {
is = context.getResources().openRawResource(rawId);
int size = is.available();
buffer = new byte[size];
is.read(buffer);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
is = null;
} catch (IOException e) {
e.printStackTrace();
}
}
}
return buffer;
}
}
SharedPreference的操作 import android.content.Context;
import android.content.SharedPreferences;
/**
* SharedPreference方式持久化数据的工具类
*
* @author lizhangqu
* @version 1.0
*/
public class SharedPreferenceUtil {
/**
* 保存键值对
*
* @param context 上下文
* @param fileName 文件名
* @param key 键
* @param value 值
* @return 是否保存成功
*/
public static boolean set(Context context,String key,String value) {
SharedPreferences sharedPreferences = context.getSharedPreferences(
fileName,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(key,value);
return editor.commit();
}
/**
* 获得键对应的值,如果没有则返回""
*
* @param context 上下文
* @param fileName 文件名
* @param key 键
* @return 值,没有则返回""
*/
public static String get(Context context,String key) {
return get(context,key,"");
}
/**
* 获得键对应的值,如果没有则返回defaultValue
*
* @param context 上下文
* @param fileName 文件名
* @param key 键
* @param defaultValue 默认值
* @return 值,没有则返回defaultValue
*/
public static String get(Context context,String defaultValue) {
SharedPreferences sharedPreferences = context.getSharedPreferences(
fileName,Context.MODE_PRIVATE);
String value = sharedPreferences.getString(key,defaultValue);// 第二个参数为默认值
return value;
}
/**
* 移除一项
* @param context 上下文
* @param fileName 文件名
* @param key 键
* @return 是否移除成功
*/
public static boolean remove(Context context,String key) {
SharedPreferences sharedPreferences = context.getSharedPreferences(
fileName,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.remove(key);
return editor.commit();
}
/**
* 清除文件内容
* @param context 上下文
* @param fileName 文件名
* @return 是否清除成功
*/
public static boolean clear(Context context,String fileName) {
SharedPreferences sharedPreferences = context.getSharedPreferences(
fileName,Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.clear();
return editor.commit();
}
/**
* 某一项是否存在
* @param context 上下文
* @param fileName 文件名
* @param key 键
* @return 该键对应的值是否存在
*/
public static boolean contatins(Context context,Context.MODE_PRIVATE);
return sharedPreferences.contains(key);
}
}
以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。 如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
