|
|
1
49
对于一般的inputstream,我将它包装在一个bufferedinputstream中,并执行如下操作:
|
|
|
2
16
您可能会发现pushbackinputstream非常有用: http://docs.oracle.com/javase/6/docs/api/java/io/PushbackInputStream.html |
|
|
3
5
使用BufferedInputStream时,请确保尚未对输入流进行缓冲,双缓冲将导致一些严重的难以找到的错误。 此外,您还需要以不同的方式处理读卡器,如果对读卡器进行缓冲,转换为流读卡器和缓冲将导致字节丢失。 另外,如果您使用的是读卡器,请记住您不是在读取字节,而是在默认编码中读取字符(除非设置了显式编码)。 您可能不知道的缓冲输入流示例是url url;url.openstream(); 我没有此信息的任何引用,它来自调试代码。 我遇到的主要问题是从文件读取到压缩流的代码。 如果我记得正确,一旦你开始调试代码,有评论在Java源,某些事情不能正常工作。 我不记得使用BufferedReader和BufferedInputStream的信息在哪里 来自,但我认为即使在最简单的测试中,也会直接失败。 记住,要测试这一点,您需要标记的缓冲区大小(BufferedReader和BufferedInputStream的大小不同),当被读取的字节到达缓冲区的末尾时,就会出现问题。 注意,有一个源代码缓冲区大小,它可能与您在构造函数中设置的缓冲区大小不同。 我做这件事已经有一段时间了,所以我对细节的记忆可能有点模糊了。 测试是使用filterreader/filterinputstream完成的,将一个添加到直接流,一个添加到缓冲流以查看差异。 |
|
|
4
4
我在这里找到了一个peekableinputstream的实现: http://www.heatonresearch.com/articles/147/page2.html 本文中所示的实现的思想是,它在内部保留一个“peeked”值数组。当调用read时,首先从被偷看的数组返回值,然后从输入流返回值。当您调用peek时,这些值将被读取并存储在“peek”数组中。 由于示例代码的许可证是lgpl,因此可以将其附加到此日志:
|
|
|
user29759326 · 如何返回递归函数中的最后一个值? 1 年前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 1 年前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 1 年前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |