/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_fileText_fileRead */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>#ifndef _Included_com_fileText_fileRead
#define _Included_com_fileText_fileRead
#ifdef __cplusplus#include "fileReader.h"fileReader m_reader;jstring chartojstring( JNIEnv* env, char* pat )
{
//__android_log_print(ANDROID_LOG_WARN, "wuzhenhua", "change1");
jclass strClass = env->FindClass("java/lang/String");
jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = env->NewByteArray(strlen(pat));
env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat);
jstring encoding = env->NewStringUTF("UTF-8");
return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);
}extern "C" {
#endif/*
* Class: com_fileText_fileRead
* Method: loadFile
* Signature: (Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_com_fileText_fileRead_loadFile
(JNIEnv *env, jobject, jstring filePath)
{
char *file =(char*)env->GetStringUTFChars(filePath,0);
return m_reader.loadFile(file);
}/*
* Class: com_fileText_fileRead
* Method: GetBuf
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT jstring JNICALL Java_com_fileText_fileRead_GetBuf
(JNIEnv *env, jobject, jint size)
{
char *buffer = new char[size];
memset(buffer,0,size);
m_reader.GetfileBuf(buffer);
jstring buf = chartojstring(env,buffer);
char *file =(char*)env->GetStringUTFChars(buf,0);
FILE *fp =NULL;
fp = fopen("/sdcard/110.txt","wr");
fwrite(file,sizeof(char),strlen(file),fp);
fclose(fp);
return buf;
}#ifdef __cplusplus
}
#endif
#endif目的是在Eclipse 端传文件路径,C++端读数据再返回回去;
fileReader 是C++的一个类,没问题。
通过测试当读txt文档时,可以通过测试,但是当我读png图片时,返回的是前几个字节,不完整,
我怀疑是chartojstring()这个函数出问题了,懂得人帮看看。
#include <jni.h>
/* Header for class com_fileText_fileRead */
#include <stdlib.h>
#include <stdio.h>
#include <string.h>#ifndef _Included_com_fileText_fileRead
#define _Included_com_fileText_fileRead
#ifdef __cplusplus#include "fileReader.h"fileReader m_reader;jstring chartojstring( JNIEnv* env, char* pat )
{
//__android_log_print(ANDROID_LOG_WARN, "wuzhenhua", "change1");
jclass strClass = env->FindClass("java/lang/String");
jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = env->NewByteArray(strlen(pat));
env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat);
jstring encoding = env->NewStringUTF("UTF-8");
return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);
}extern "C" {
#endif/*
* Class: com_fileText_fileRead
* Method: loadFile
* Signature: (Ljava/lang/String;)Z
*/
JNIEXPORT jboolean JNICALL Java_com_fileText_fileRead_loadFile
(JNIEnv *env, jobject, jstring filePath)
{
char *file =(char*)env->GetStringUTFChars(filePath,0);
return m_reader.loadFile(file);
}/*
* Class: com_fileText_fileRead
* Method: GetBuf
* Signature: (Ljava/lang/String;)V
*/
JNIEXPORT jstring JNICALL Java_com_fileText_fileRead_GetBuf
(JNIEnv *env, jobject, jint size)
{
char *buffer = new char[size];
memset(buffer,0,size);
m_reader.GetfileBuf(buffer);
jstring buf = chartojstring(env,buffer);
char *file =(char*)env->GetStringUTFChars(buf,0);
FILE *fp =NULL;
fp = fopen("/sdcard/110.txt","wr");
fwrite(file,sizeof(char),strlen(file),fp);
fclose(fp);
return buf;
}#ifdef __cplusplus
}
#endif
#endif目的是在Eclipse 端传文件路径,C++端读数据再返回回去;
fileReader 是C++的一个类,没问题。
通过测试当读txt文档时,可以通过测试,但是当我读png图片时,返回的是前几个字节,不完整,
我怀疑是chartojstring()这个函数出问题了,懂得人帮看看。
解决方案 »
- 大家帮忙了?日志如下
- 过滤log信息,BufferedWriter写入文件无效。help~
- 怎样在代码中把framelayout里的某一层放到最顶层
- 调用android的系统相机并将刚拍的照片在ImageView里显示出来
- 如何在屏幕最上层绘图?
- 新手求助:Eclipse 4.4 Luna 应该配哪个版本的ADT?
- 开发安卓应用内置银行卡支付,用网银在线是不是不科学啊?求解疑
- 为什么MediaPlayer pause();后会将之前新建的线程重新new一个?
- android通过WIFI热点把一部手机的文件传输到另一个手机
- Android开发项目时,在vivoX9上运行时遇到的问题
- eclipse 如何导入新浪微博的java sdk
- android的测试时候,需要在AndroidManifest.xml文件里添加什么?
2,注意编码问题
应该用byte 对应你的数据,而不是用string。
png文件你还要怎么解析?可以直接转成对应的bitmap对象