Thrift用二进制流传输文件丢失的问题(已解决)

Thrift用二进制流传输文件遇到的问题

场景:以C为服务器,用thrift通过调用C的接口将文件读取到字节流中然后用java获取存到本地后再读取做一些事情。(thrift中用的binary与char*相对)

遇到的问题

在字节流读文件时fread的结果是正确的(和文件长度相等),但是在java端接收和输出就只有前面的几个字节,然后我一直以为fread的问题,没有将数据读到char*中,如图(c和java输出的都是它),我2M的文件只能读出这些数据,char*转string也不行
Thrift用二进制流传输文件丢失的问题(已解决)
然后用WinHEX打开文件,发现似乎是00的问题,有可能读到00就不读了。。。
然后我就用循环只读1000个字节然后依次赋值输出发现是能读到后面数据的Thrift用二进制流传输文件丢失的问题(已解决)
Thrift用二进制流传输文件丢失的问题(已解决)
然后回想了一下,得出结论:

%s输出遇到00就当作是结束了,后面的就不管了,char转string也是,thrift中binary数据类型也是,真的神坑

解决办法

我觉得可以用thrift的list<byte>来存字节流