示例简单代码
//用 contentProvider 封装 对 文件的操作
public class MyFileContentProvider extends ContentProvider{
String[] columns = new String[] { "id", "name", "age","date" };
MatrixCursor mMatrixCursor = new MatrixCursor(columns);
String fileName ; //缓存文件的地址
@Override
public boolean onCreate() {
return false;
}
//此方法可以查看 android 源码中的 mediaProvider模块中
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode)
throws FileNotFoundException {
// TODO Auto-generated method stub
return super.openFile(uri, mode);
}
@Override
public int delete(Uri uri, String arg1, String[] arg2) {
//比如要删除某条数据,或者删除某个日期前的缓存数据文件( 多个文件) 或 是删除文件中的部分内容
//首先还是读取整个文件
return 0;
}
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}
@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
//对文件的内容后续追加,比如 缓存文件的增量添加
String id = values.getAsString("id");
String name = values.getAsString("name");
String age = values.getAsString("age");
String date = values.getAsString("date");
//对数据进行格式化转换 example
String content = id + "=\n" + name + "=\n" + age + "=\n" + date;
//打开文件输入流,对文件读写 追加内容 使用 FileWrite
FileWriter writer = null;
try {
// 打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件
writer = new FileWriter(fileName, true);
writer.write(content);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(writer != null){
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
//查询数据,可以封装自己的数据文件的操作,然后装载成 cursor返回
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
//1....... 对自己的数据文件读取,解析....... File file = new File("---");
//组装数据
String row[] = new String[4];
row[0] = "1";
row[1] = "xiaoming";
row[2] = "12";
row[3] = System.currentTimeMillis()+ "";
//add
mMatrixCursor.addRow(row);
return mMatrixCursor;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
return 0;
}
}