如何从Java中的InputStream构造TTransport对象

时间:2013-01-30 10:03:19

标签: java python inputstream thrift

我想将一段python代码重写为java。 Python代码如下:

transport = StringIO(thrifts_data)        
transport.seek(0)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
....
doc = StreamItem()
doc.read(protocol)

在上面的代码中,thrifts_data是从文件读取的二进制流。 现在我需要在java中重写它,我在网上搜索过,但没有找到任何有用的东西。 在java中,TTransport是一个抽象类,它有一些子类,但我不确定我应该选择哪个,因为它们中没有一个包含一个带有输入流参数的构造方法。 谁能帮我?提前谢谢。

2 个答案:

答案 0 :(得分:0)

TIOStreamTransport有一个带InputStream参数的构造函数。

您可能也对TMemoryInputTransportTFileTransport感兴趣。

答案 1 :(得分:0)

对于某些人可能会担心,我已经解决了java中的问题如下:

TTransport transport;
transport = new TMemoryInputTransport(byte_data);
TBinaryProtocol tbp = new TBinaryProtocol(transport);
StreamItem si = new StreamItem();
si.read(tbp);