AssetDatabaseOpenHelper工具类,此工具类不是网上大家用烂的那一份,是博主亲自编写,亲自测试,代码简洁清晰,可满足日常开发。
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
/**
* Created on 2021/4/6 9:39
* 目录资源获取
* @author Gong Youqiang
*/
public class AssetDatabaseOpenHelper {
private Context context;
private String databaseName;
public AssetDatabaseOpenHelper(Context context, String databaseName) {
this.context = context;
this.databaseName = databaseName;
}
/**
* Create and/or open a database that will be used for reading and writing.
*
* @return 返货数据库的对象
* @throws RuntimeException if cannot copy database from assets
* @throws SQLiteException if the database cannot be opened
*/
public synchronized SQLiteDatabase getWritableDatabase() {
File dbFile = context.getDatabasePath(databaseName);
if (dbFile != null && !dbFile.exists()) {
try {
copyDatabase(dbFile);
} catch (IOException e) {
throw new RuntimeException("Error creating source database", e);
}
}
return SQLiteDatabase.openDatabase(dbFile.getPath(), null, SQLiteDatabase.OPEN_READWRITE);
}
/**
* Create and/or open a database that will be used for reading only.
*
* @return 返回读的数据库对象
* @throws RuntimeException if cannot copy database from assets
* @throws SQLiteException if the database cannot be opened
*/
public synchronized SQLiteDatabase getReadableDatabase() {
File dbFile = context.getDatabasePath(databaseName);
if (dbFile != null && !dbFile.exists()) {
try {
copyDatabase(dbFile);
} catch (IOException e) {
throw new RuntimeException("Error creating source database", e);
}
}
return SQLiteDatabase.openDatabase(dbFile.getPath(), null, SQLiteDatabase.OPEN_READONLY);
}
/**
* @return the database name
*/
public String getDatabaseName() {
return databaseName;
}
private void copyDatabase(File dbFile) throws IOException {
InputStream stream = context.getAssets().open(databaseName);
FileUtils.writeFile(dbFile, stream);
stream.close();
}
/**
* 获取asset文件下的资源文件信息
* @param fileName
* @return
*/
public static String getFromAssets(String fileName, Context context) {
try {
InputStreamReader inputReader = new InputStreamReader(
context.getAssets().open(fileName));
BufferedReader bufReader = new BufferedReader(inputReader);
String line = "";
String Result = "";
while ((line = bufReader.readLine()) != null) {
Result += line;
}
return Result;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
网友评论