Java InputStream 到 Python (PY4J)
Posted
技术标签:
【中文标题】Java InputStream 到 Python (PY4J)【英文标题】:Java InputStream to Python (PY4J) 【发布时间】:2014-11-11 12:34:02 【问题描述】:我正在使用 PY4J (http://py4j.sourceforge.net/) 在 python 中运行 Java 代码。
我的 java 函数返回一个 InputStream,我想在我的 python 代码中操作它:
Java 代码:
public InputStream getPCAP(key)
InputStream inputStream = cyberStore.getPCAP(pcapStringKey);
return inputStream;
Python 代码:
from py4j.java_gateway import JavaGateway
gateway = JavaGateway()
input_stream = PY4J_GateWay.getPCAP(key);
...
如何在 python 中获取 InputStream?
在将其返回给 python 之前,我是否应该将其转换为 java 代码中的其他内容?
【问题讨论】:
我们需要更多代码来回答这个问题:包含 getPCAP 的类以及如何创建和访问此类的实例。 在通过 Py4j 共享流和将数据存储在文件系统(甚至 /dev/shm)和加载正常的 python 操作方式之间,你有任何基准比较吗? 【参考方案1】:我猜你想从输入流中读取数据。
Java 的 API 允许您从 InputStream
读取到 byte
数组。没有简单的方法通过引用传递 Pythonic bytearray
,但您可以轻松添加一个从 InputStream
读取并返回 byte
数组的方法:
public byte[] read(InputStream stream, int count) throws IOException
byte[] bytes = new byte[count];
stream.read(bytes);
return bytes;
然后,在 Python 中,您可以调用此方法从 InputStream
中读取:
gateway = JavaGateway()
input_stream = gateway.getPCAP(key)
data = gateway.read(input_stream, 1000) # reads 1000 bytes from input_stream
【讨论】:
以上是关于Java InputStream 到 Python (PY4J)的主要内容,如果未能解决你的问题,请参考以下文章
Java 发送 Live Video InputStream 到 Red5 Media Server
JAVA之InputStream加载网络图片(填充到src)