Java InputStream для Python (PY4J)
Я запускаю Java-код в Python, используя PY4J ( http://py4j.sourceforge.net/).
Моя функция 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);
...
Как я могу получить InputStream в Python?
Должен ли я преобразовать его в что-то еще в коде Java, прежде чем вернуть его в Python?
1 ответ
Решение
Я предполагаю, что вы хотите читать из входного потока.
API Java позволяет читать с 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