@Olaf, . . , , , .
, Java fputs(), , C, Java, , , jbyteArray , , , . , , . , , , . " ".
. , C -, Java , . , jbytearray , JNI . , , .
:
jsize num_bytes = GetArrayLength(env, array);
char *buffer = malloc(num_bytes + 1);
if (!buffer) {
}
jbyte* elements = GetByteArrayElements(env, array, NULL);
if (!elements) {
}
memcpy(buffer, elements, num_bytes);
buffer[num_bytes] = 0;
ReleaseByteArrayElements(env, array, elements, JNI_ABORT);
, buffer , , , fputs():
int result = fputs(buffer, file);
, , , , :
free(buffer);
, , , strlen() , . , - , .
Update
- C. , , , C fputs() , , . @Michael, , , , .
, C . . , , fprintf() :
fprintf("%*s", (int) num_bytes, (char *) elements);
, , . :
#include <stdio.h>
#include <jni.h>
#include "FileIO.h"
JNIEXPORT void JNICALL Java_FileIO_writeToFile(JNIEnv *env, jobject job,
jbyteArray array) {
FILE *fp = fopen( "file.txt" , "w" );
if (!fp) {
}
jsize num_bytes = GetArrayLength(env, array);
jbyte* elements = GetByteArrayElements(env, array, NULL);
if (!elements) {
}
if (fwrite(elements, 1, num_bytes, fp) != num_bytes) {
}
ReleaseByteArrayElements(env, array, elements, JNI_ABORT);
fclose(fp);
}