首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从外部流访问数据

如何从外部流访问数据
EN

Stack Overflow用户
提问于 2016-08-30 13:23:21
回答 1查看 46关注 0票数 0

web服务正在提供二进制chunked application/octet-stream。我必须用java构建一个读取客户端。我从一些文档中了解该结构,并希望将该流用作ObjectInputStream,但在我调用任何自制的readObject方法之前,由于java.io.StreamCorruptedException: invalid stream header,这种方法失败了。

从这样一个字节流填充java对象的最佳方法是什么?

顺便说一句:数据以LittleEndian的形式出现,16位字符的文本被4字节大小的信息所取代。

03 00 00 00 41 00 62 00 63 00 (六角)

会导致"Abc“

EN

回答 1

Stack Overflow用户

发布于 2016-08-30 15:08:41

有时候,从头开始(或者使用您已经知道的工具)比寻找更复杂的解决方案更快。我只是创建了自己的专用DataInputStream:

代码语言:javascript
复制
import java.io.IOException;
import java.io.InputStream;

public class LittleEndianInputStream {
    private InputStream s;  

    public LittleEndianInputStream (InputStream in) { s = in; }

    boolean readBoolean() throws IOException {return (s.read() == 1);}

    int readInt() throws IOException {return s.read() | s.read() << 8 | s.read() << 16 | s.read() << 24; }

    char readChar() throws IOException {return (char)(s.read() | s.read() << 8); }

    String readString() throws IOException {
        int len = readInt();
        char [] tarray = new char[len];
        for (int i = 0; i < len; i++ ) tarray[i] = readChar();
        return new String(tarray);
    }
}

为了根据需要扩展更多的数据类型..。

(仍欢迎其他解决办法;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39228745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档