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>来存字节流

相关文章:

  • 2022-01-09
  • 2022-12-23
  • 2022-01-01
  • 2022-12-23
  • 2021-06-17
  • 2022-12-23
  • 2022-12-23
  • 2021-08-11
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-02
  • 2021-08-16
  • 2021-11-17
  • 2022-12-23
  • 2021-07-10
相关资源
相似解决方案