读取流中的第一行并将其从流中删除

Sti*_*cke 4 java

我有 2 个类必须读取 an InputStream,第一个类应该只解释流的第一行,但第一行应该从流中删除,以便 B 类可以解释第一行之后的所有内容。InputStream当我将 my 传递给 aBufferedReader并执行 a时,这不起作用readLine()

我知道我可以在流上进行读取,直到遇到 \b,但也许存在更合适的解决方案来完成这项工作?

// Reads the first line from the stream and everything else
public String retrieveFileNameFromTheFirstLineInInputStream(InputStream in) throws IOException {
    InputStreamReader isReader = new InputStreamReader(in);
    BufferedReader reader = new BufferedReader(isReader);
    return reader.readLine();
}
Run Code Online (Sandbox Code Playgroud)

Mot*_*Mot 5

您无法从 中删除InputStream某些内容,您只能从中读取内容。不要使用BufferedReader来读取该行,因为它肯定会读取比第一行多得多的内容InputStreamReader(以填充其缓冲区),而第一行本身是从InputStream.

我建议使用 进行读取,InputStreamReader直到到达行尾,然后将InputStream实例传递给应该读取它的代码。

顺便说一句,您始终应该指定 所使用的编码InputStreamReader,否则系统编码将用于将字节从 转换InputStream为字符,这在不同的机器上可能有所不同。