gpt4 book ai didi

c - 如何直接从文件设置 jbytearray

转载 作者:行者123 更新时间:2023-11-30 15:32:05 32 4
gpt4 key购买 nike

我有以下 native 代码,它从文件复制到缓冲区,然后复制该缓冲区的内容放入 jbytearray 中。

JNIEXPORT void JNICALL Java_com_test(JNIEnv * env, jobject){

int file_descriptor = 100;
JNIEnv * jni_env = env;
FILE* file = fdopen(file_descriptor, "r");
unsigned char* buffer;
int size_of_file = 1000000;
fread(buffer, 1, static_cast<size_t>(size_of_file), file);
imageArr = static_cast<jbyteArray>(jni_env->NewByteArray(static_cast<jsize> (size_of_file)));
jni_env->SetByteArrayRegion (imageArr, 0, static_cast<jsize>
(size_of_file ), (jbyte*)buffer);

}

由于这段代码在循环中运行,我想尽可能地优化它。有没有办法直接从文件读取到jbyteArray?我知道 jbyteArray 是一个指向结构的指针。有没有办法直接设置这个结构体的字段而不是使用 setByteArrayRegion() 函数?

如果没有,是否有其他函数可以用来从文件读取到 jbytearray?

最佳答案

简而言之,没有。您或许可以做到,但速度可能不会快很多,并且如果 JVM 中的实现发生更改,您的代码将停止工作。您正在处理文件 I/O,因此我认为 SetByteArrayRegion 不是您真正的瓶颈。

关于c - 如何直接从文件设置 jbytearray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24434844/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com