JNI中C++ istream/ostream与Java InputStream/OutputStream的连接

flu*_*ffy 5 c++ java java-native-interface iostream

InputStream是否有任何现有的 C++/JNI 库可以完成 Java和 C++istream以及 JavaOutputStream和 C++之间的编组访问工作ostream?特别是,我希望 Java 应用程序能够将 anInputStream或 an传递到用作其流接口的OutputStreamC++ 库中。iostreams

如果不存在现有库,为了支持此功能,我需要在istream/实现中实现的最低功能是什么?ostream更糟糕的是,我还需要支持seektell,尽管原则上我应该能够使用markresetskip来做我需要的事情。

由于这些流可能非常大,我不想简单地将它们加载到 a 中ByteArray,然后将其变成 astringstream等。

wil*_*ilx 1

我假设您的源/接收器是 Java 对象,并且您的 C++ 库需要从 Java 读取InputStream并写入 JavaOutputStream实例,并且您需要 C++ IO 流的外观,您可以将其传递到将调用的 C++ 部分返回数据到您的 Java 对象中。

我建议使用Boost.Iostreams 库为 Java 流实现 C++ IO 流外观。浏览文档和示例。您想要的是stream_bufferstream类以及您自己的接收器概念的实现(另请参阅设备概念device)。

更新

要实现搜索,您需要实现SeekableDevice 概念并在设备的category.