首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BufferedInputStream没有标记

BufferedInputStream没有标记
EN

Stack Overflow用户
提问于 2010-09-22 05:07:42
回答 2查看 472关注 0票数 1

我的BufferedInputStream没有正确标记。这是我的代码:

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
    byte[] b = "HelloWorld!".getBytes();
    BufferedInputStream bin = new BufferedInputStream(new ByteArrayInputStream(b));
    bin.mark(3);
    while (true){
        byte[] buf = new byte[4096];
        int n = bin.read(buf);
        if (n == -1) break;
        System.out.println(n);
        System.out.println(new String(buf, 0, n));
    }
}

这是输出:

代码语言:javascript
复制
11
HelloWorld!

我想让它输出

代码语言:javascript
复制
3
Hel
8
loWorld!

我还尝试了仅使用纯ByteArrayInputStream作为bin的代码,它也不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-22 05:18:51

我想你误解了mark是做什么的。

mark的目的是让流记住它的当前位置,这样您以后就可以使用reset()返回到它。参数不是下一步将读取多少字节--而是在标记被认为无效之前您能够读取的字节数(例如:您将不能reset()回到它;您将得到一个异常,或者在流的开始处结束)。

详情请参见the docs on InputStream。读者的mark方法的工作方式非常相似。

票数 5
EN

Stack Overflow用户

发布于 2010-09-22 05:12:09

这不是mark()所做的。您需要重新阅读文档。Mark允许您在流中向后移动。

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

https://stackoverflow.com/questions/3764479

复制
相关文章

相似问题

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