Search code examples
javac++java-native-interfaceinputstream

How to move data from java InputStream to a char * in c++ with jni?


How can I move the data stored in a java InputStream to a char * in c++ using JNI?

Thanks, Carlos.


Solution

  • From java:

    {
            InputStream inputStream = rcvStream;
    
            byte[]  inData      = new byte[1024];
            int     bytesRead   = inputStream.read();
            byte[]  actualData  = new byte[bytesRead];
            System.arraycopy(inData, 0, actualData, 0, bytesRead);
    
            jni.setByteArray(inData, bytesRead);
    }
    

    From C:

    {
    
    JNIEXPORT jbyteArray JNICALL Java_org_alok_jni_AlokJNI_setByteArray
      (JNIEnv * env, jclass this1, jbyteArray ba, jint len) {
    memcpy(my_char_array, ba, len);
    
    }