📄 jniencryptor.cpp
字号:
#include "stdafx.h"
#include "JNIEncryptor.h"
#include "FileCodec.h"
//将Java的Unicode字符串转化成本地字符数组;
char* JStringToString(JNIEnv* env, jstring jstr)
{
int length = env->GetStringLength(jstr);
const jchar* jcstr = env->GetStringChars(jstr,0);
char* retn = (char*)malloc(length * 2 + 1);
ZeroMemory(retn,sizeof(retn));
int size = 0;
size = WideCharToMultiByte(CP_ACP, 0,(LPCWSTR)jcstr, length, retn,(length * 2 + 1),NULL,NULL);
if(size <= 0)
return NULL;
env->ReleaseStringChars(jstr,jcstr);
return retn;
}
//将本地字符数组转化成Java的Unicode字符串
jstring StringToJString(JNIEnv* env, char* str)
{
jstring retn = 0;
int slen = strlen(str);
if(slen == 0)
retn = env->NewStringUTF(str);
else
{
int length = MultiByteToWideChar(CP_ACP,0,(LPCSTR)str,slen,NULL,0);
wchar_t* buffer = (wchar_t*)malloc(length * 2 + 1);
ZeroMemory(buffer,sizeof(buffer));
if(MultiByteToWideChar(CP_ACP, 0,(LPCSTR)str,slen,(LPWSTR)buffer,length)>0)
retn = env->NewString((jchar*)buffer,length);
free(buffer);
}
return retn;
}
/*
* Class: JNIEncryptor
* Method: EncryptFolder
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT jboolean JNICALL Java_JNIEncryptor_EncryptFolder
(JNIEnv* env, jclass clazz, jstring key, jstring strDir, jstring strFileType)
{
CFileCodec fc;
char* chKey , *chDir, *chFileType;
BOOL retn;
CString errMsg;
chKey = JStringToString(env,key);
chDir = JStringToString(env,strDir);
chFileType = JStringToString(env,strFileType);
retn = fc.EncDir(chKey,chDir,chFileType, errMsg);
free(chKey);
free(chDir);
free(chFileType);
return retn;
}
/*
* Class: JNIEncryptor
* Method: DecryptFolder
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT jboolean JNICALL Java_JNIEncryptor_DecryptFolder
(JNIEnv* env, jclass clazz, jstring key, jstring strDir, jstring strFileType)
{
CFileCodec fc;
char* chKey , *chDir, *chFileType;
BOOL retn;
CString errMsg;
chKey = JStringToString(env,key);
chDir = JStringToString(env,strDir);
chFileType = JStringToString(env,strFileType);
retn = fc.DecDir(chKey,chDir,chFileType, errMsg);
free(chKey);
free(chDir);
free(chFileType);
return retn;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -