1

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コードで別のものに変換する必要がありますか?

4

1 に答える 1

1

入力ストリームから読み取りたいと思います。

Java の API を使用すると、 から配列に読み取ることができInputStreamますbyte。参照によってPythonic を渡す簡単な方法はありませんが、配列から読み取って返すbytearrayメソッドを簡単に追加できます。InputStreambyte

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
于 2014-09-22T08:08:10.630 に答える