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
Другие вопросы по тегам