InputStream will not reset to beginning

后端 未结 2 1466
情话喂你
情话喂你 2020-12-16 16:27
InputStream data = realResponse.getEntity().getContent();
byte[] preview = new byte[100];
data.read(preview, 0, 100);

// Now I want to refer to the

相关标签:
2条回答
  • 2020-12-16 16:45

    When you use mark() of the java.io.InputStream object you should check with the markSupported() method if your InputStream actually support using mark. According to the API the InputStream class doesn't, but the java.io.BufferedInputStream class does. Maybe you should embed your stream inside a BufferedInputStream object like:

    InputStream data = new BufferedInputStream(realResponse.getEntity().getContent());
    // data.markSupported() should return "true" now
    data.mark(some_size);
    // work with "data" now
    ...
    data.reset();
    
    0 讨论(0)
  • 2020-12-16 16:49

    If the InputStream supports mark (you can check with the markSupported() method), then the following should work:

    InputStream data = realResponse.getEntity().getContent();
    byte[] preview = new byte[100];
    data.mark(100);
    data.read(preview, 0, 100);
    data.reset();
    

    However, be aware that data.read(preview, 0, 100) is not guaranteed to read 100 bytes in one go, it may read less.

    0 讨论(0)
提交回复
热议问题