前言
准备工作
1.创建FilePatchActivity,别忘记在清单文件中配置,布局文件如下,简单的两个按钮,分别控制拆分与合并
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_vertical">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="拆分"
android:onClick="mSplit"/>
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="合并"
android:onClick="mMerge"/>
2.在cpp文件夹下创建一个C的文件file_patch.c,然后在CMakeLists.txt中添加库并绑定库,如果对此不明白的,可以参考我之前的博客。
3.创建一个Java类FilePatchUtil,里面定义两个方法,分别为split和merge,同时写上同步代码块,加载file_patch库。
public class FilePatchUtil {
static {
System.loadLibrary("file_patch");
}
//拆分
public native static void split(String path, String pathPattern, int count);
//合并
public native static void merge(String pathMerge, String pathPattern, int count);
}
4.此时我们可以Alt + Enter一键生成C的函数,此时如果你的项目cpp文件夹下有多个C/C++文件,生成的函数可能不在你所希望的文件下,这时候直接复制粘贴即可。(暂时我还没有更好的处理方式)
拆分
首先添加头文件:
#include "jni.h"
#include
#include
#include
添加公共的函数:
//根据文件的路径,获得文件的大小
long get_file_size(char* path) {
FILE* fp = fopen(path, "rb");
fseek(fp, 0, SEEK_END);
return ftell(fp);
}
接下来就是文件拆分函数:
JNIEXPORT void JNICALL
Java_com_zh