android zip格式的ndk,Android 使用NDK (JNI)容易解压7z压缩文件
C语言使用LZMA SDK解压非加密7z文件介绍:http://hzy3774.iteye.com/blog/2104510
github项目地址:https://github.com/hzy3774/AndroidUn7zip
把前文中相应源文件和头文件复制到jni目录下:
写java接口源文件:
package com.hu.andun7z;
import java.io.File;
public class AndUn7z {
public static boolean extract7z(String filePath, String outPath)
{
File outDir = new File(outPath);
if(!outDir.exists() || !outDir.isDirectory())
{
outDir.mkdirs();
}
return (AndUn7z.un7zip(filePath, outPath) == 1);
}
//JNI interface
private static native int un7zip(String filePath, String outPath);
static {
System.loadLibrary("un7z");
}
}
在项目中只要调用extract7z(String filePath, String outPath)就可以实现解压了
javah -jni 生成对应的c++接口文件,填充函数:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class com_hu_andun7z_AndUn7z */
#ifndef _Included_com_hu_andun7z_AndUn7z
#define _Included_com_hu_andun7z_AndUn7z
#ifdef __cplusplus
extern "C" {
#endif
#include "JniWrapper.h"
/*
* Class: com_hu_andun7z_AndUn7z
* Method: un7zip
* Signature: (Ljava/lang/String;Ljava/lang/String;)I
*/
JNIEXPORT jint JNICALL Java_com_hu_andun7z_AndUn7z_un7zip
(JNIEnv *env, jclass thiz, jstring filePath, jstring outPath)
{
const char* cfilePath = (const char*)env->GetStringUTFChars(filePath, NULL);
const char* coutPath = (const char*)env->GetStringUTFChars(outPath, NULL);
LOGD("start extract filePath[%s], outPath[%s]", cfilePath, coutPath);
jint ret = extract7z(cfilePath, coutPath);
LOGD("end extract");
env->ReleaseStringUTFChars(filePath, cfilePath);
env->ReleaseStringUTFChars(outPath, coutPath);
return ret;
}
#ifdef __cplusplus
}
#endif
#endif
写NDK相关的头文件JniWrapper.h
/*
* JniWrapper.h
*
* Created on: 2014-8-12
* Author: HZY
*/
#ifndef JNIWRAPPER_H_
#define JNIWRAPPER_H_
#include
#include
#include "src/Types.h"
#define LOG_TAG "jniLog"
#undef LOG
#ifdef DEBUG
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
#else
#define LOGD(...) do{}while(0)
#endif
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)
#define LOGF(...) __android_log_print(ANDROID_LOG_FATAL,LOG_TAG,__VA_ARGS__)
int extract7z(const char* srcFile, const char* dstPath);
#endif /* JNIWRAPPER_H_ */
接口最终调用上文中介绍的函数:int MY_CDECL extract7z(const char* srcFile, const char* dstPath);
打印的输出改到Logcat中输出。
文件成功解压
压缩文件中的路径和输出路径不能存在中文,不然文件输出不了。
android zip格式的ndk,Android 使用NDK (JNI)容易解压7z压缩文件相关推荐
- Mac解压Windows 压缩文件(.zip格式)乱码问题
1.在App Store下载:The Unarchiver解压工具 2.设置The Unarchiver解压格式,打开The Unarchiver软件------>高级------>简体中 ...
- java zip加密压缩_Java解压和压缩带密码的zip文件过程详解
前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...
- java zip 解压 密码_Java解压和压缩带密码的zip文件过程详解
前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...
- java 压缩解压密码zip_Java解压和压缩带密码的zip文件过程详解|chu
前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...
- java压缩文件详解_Java解压和压缩带密码的zip文件过程详解
前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...
- Mac上zip,rar,tar文件命令解压和压缩
经常遇到在windowns上的压缩文件,在mac上解压出现问题,特意总结了下在Terminal里常用命令的方式解压和压缩文件 1.zip压缩文件 zip命令的参数很多,可以利用"zip -- ...
- 利用R语言解压与压缩 .tar.gz .zip .gz .bz2 等文件
最近尝试用 R 对一些文件进行批量的解压与压缩,这里记录一些常用的解压与压缩的方法. 由于解压与压缩是对称的两种方法,这里我们着重以对文件的解压为例,分不同的格式进行讲解. .zip 压缩:zip() ...
- centos解压分卷rar_centos解压和压缩rar格式文件
在liunx下原本是不支持rar文件的,需要安装liunx下的winrar版本,操作如下 wget http://www.rarsoft.com/rar/rarlinux-4.0.1.tar.gz t ...
- linux备份压缩tgz,linux关于解压和压缩命令 zip rar tar.gz tgz
linux关于解压和压缩命令 .zip 解压:unzip FileName.zip 压缩:zip FileName.zip DirName .rar 解压:rar -x FileName.zip 压缩 ...
最新文章
- ASP.NET MVC项目 解决session失效
- c语言 写出raw文件,求指导,如何用c语言实现读取*.raw格式图像
- MySQL常见函数介绍
- index.html图片弹窗,原生javascript实现图片弹窗交互效果
- 使用Source Monitor检测Java代码的环复杂度
- Party at Hali-Bula UVA - 1220(树形dp)
- P1072-Hankson的趣味题【数论,gcd】
- 小度智能音箱维修点_进击的小钢炮!体验小度智能音箱大金刚
- 泰山OFFICE在LINUX上的文件图标终于全部正确
- android checkboxpreference属性,android – 具有自己布局的CheckBoxPreference
- 中兴ZXD2400电源电路图图纸 图纸 线路图不是PCB图
- 【2021应用上架】超详细开发者账号申请应用上架审核经验整理
- oracle alter database,alter database操作
- 安装Mendeley后Word中没有出现对应的Mendeley插件
- 苹果笔记本电脑亮度无法调节_macbook怎么调节屏幕亮度|苹果笔记本调显示器亮度方法...
- freeMarker导出word带图片
- Kubernetes 部署高可用集群(二进制,v1.18)下
- RMF客户消费行为评分模型
- 获得Windows主机的主机序列号
- IoT设备与手机App之间如何实现实时消息通信——业务场景最佳实践
热门文章
- rtl语言_21个最佳RTL WordPress主题(从右到左语言)
- PHOTOSHOP绘制卡通人物简单教程
- python关键字参数必须位于位置参数之前_python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)...
- 原创首发:JXMaker扫描助手 扫描图片并将多次扫描图像导出为PDF文档,全免费,开源
- 5个增加设计趣味性的方法
- 南宁二中三中高考2021成绩查询,2021广西重点高中名单及排名
- 微软修补Windows零日漏洞,该漏洞允许在Windows计算机上远程执行
- 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息
- GPT4论文翻译 by GPT4 and Human
- 【多场景建模】CIKM2021 阿里妈妈多场景CTR预估模型STAR 论文精读