NDK开发时, 文件读写经常是放在C中编写, 然后由Java通过jni调用执行.所以接下来写个文件读写的小demo.
一般会用到以下几个函数:
1. fopen(const char* arg1, const char* arg2);
2. fwrite(const void* arg1, size_t arg2, size_t arg3, FILE* file);
3. fseek(FILE* file, long arg1, int arg2);
4. fread(void* arg1,size_t arg2, size_t arg3, FILE* file);
5. ftell(FILE* file);
1. fopen():
参数 | 含义 |
---|---|
const char* arg1 | 文件路径 |
const char* arg2 | 文件的打开方式 |
2. fwrite():
参数 | 含义 |
---|---|
const void* arg1 | 对写入数据的对象 |
size_t arg2 | 待写入数据量的大小(字节为单位) |
size_t arg3 | 待写入数据块的大小 |
FILE* file | 目标文件指针 |
3. fseek():
参数 | 含义 |
---|---|
FILE* file | 文件指针 |
long arg1 | 偏移量 |
int arg2 | 模式 |
4. fread():
参数 | 含义 |
---|---|
void* arg1 | 带读取数据的对象 |
size_t arg2 | 待读入数据量的大小(字节为单位) |
size_t arg3 | 待读入数据块的大小 |
FILE* file | 目标文件指针 |
5. ftell():
参数 | 含义 |
---|---|
FILE* file | 文件路径 |
fopen()函数打开文件的方式
模式字符串 | 含义 |
---|---|
“r” | 以读模式打开文件 |
“w” | 以写模式打开文件,把现有文件的长度截为0,如果文件不存在,则创建一个新文件 |
“a” | 以写模式打开文件,在现有文件的末尾添加内容,如果文件不存在,则创建一个新文件 |
“r+” | 以更新模式打开文件(即可以读写文件) |
“w+” | 以更新模式打开文件,如果文件存在,则覆盖,如果不存在,则创建一个新文件 |
“a+” | 以更新模式的打开文件,如果文件存在,追加的方式写入,如果不存在,则创建新文件 |
“rb”,”wb”,”ab”,”ab+”,”a+b”,”wb+”,”w+b”,”ab+”,”a+b” | 与上一个模式类似,但是以二进制的方式打开文件 |
“wx”,”wbx”,”w+x”,”wb+x”,”w+bx” |
fseek()的第三个参数
模式 | 偏移量的起始点 |
---|---|
SEEK_SET | 文件开始处 |
SEEK_CUR | 当前位置 |
SEEK_END | 文件末尾 |
代码已经上传至github:https://github.com/ranhuanbin/JniTest/blob/master/app/src/main/cpp/FilePerform.c