gpt4 book ai didi

Java:输入流标记限制

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:45:27 26 4
gpt4 key购买 nike

根据 Java documentation , Class InputStream 服务器中mark方法的readlimit参数用于设置“在mark位置失效前可以读取的最大字节数限制。”。我有一个名为 sample.txt 的文件,其内容是“hello”。我写了这段代码:

import java.io.*;
public class InputStream{
public static void main (String[] args) throws IOException {
InputStream reader = new FileInputStream("sample.txt");
BufferedInputStream bis = new BufferedInputStream(reader);
bis.mark(1);
bis.read();
bis.read();
bis.read();
bis.read();
bis.reset();
System.out.println((char)bis.read());
}
}

输出是“h”。但是如果我在 mark 方法之后读取了一个以上的字节,我是否应该得到无效的 reset 方法调用的错误?

最佳答案

我会把这归结为文档错误。

BufferedInputStream 的非参数文档是“See the general contract of the mark method of InputStream”,这对我来说表明 BufferedInputStream 的行为没有不同,参数尽管有文件。

InputStream 指定的一般契约是

The readlimit arguments tells this input stream to allow that many bytes to be read before the mark position gets invalidated [...] the stream is not required to remember any data at all if more than readlimit bytes are read from the stream

也就是说,readlimit是一个建议;流可以自由地 promise 不足和过度交付。

关于Java:输入流标记限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289365/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com