是否有任何现有的 C++/JNI 库可以在 Java InputStream
和 C++ istream
以及 Java OutputStream 之间编码访问
和 C++ ostream
?特别是,我希望 Java 应用程序能够将 InputStream
或 OutputStream
传递到使用 iostreams
作为其流接口(interface)的 C++ 库中.
如果不存在现有库,我需要在 istream
/ostream
实现中实现的最低功能是什么以支持它?更糟糕的是,我还需要支持 seek
和 tell
,尽管原则上我应该能够使用 mark
、重置
,然后跳过
以执行我需要的操作。
由于这些流可能非常大,我不想简单地将它们加载到 ByteArray
中,然后将其转换为 stringstream
或类似的。
最佳答案
我假设您的源/接收器是 Java 对象,并且您的 C++ 库需要从 Java InputStream
读取并写入 Java OutputStream
实例,并且您需要一个 C++ IO 流的外观,您可以将其传递给 C++ 部分,这些部分将回调数据到您的 Java 对象中。
我建议使用 Boost.Iostreams library 为 Java 流实现 C++ IO 流外观。 .浏览文档和示例。你想要的是 stream_buffer
和 stream
类以及您自己的 Sink 实现和 Source概念(另见 Device concept 和 device
class )。
更新
要实现搜索,您需要实现 SeekableDevice concept并在您的 device's category
中提供适当的标签.
关于java - 在 JNI 中连接 C++ istream/ostream 和 Java InputStream/OutputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22898923/