如何从 InputStream 读取一行而不缓冲输入?

Ali*_*aka 5 java inputstream bufferedreader

我有一个输入流,其中包含一行字符串,然后是二进制数据。

如果我使用 读取该行new BufferedReader(new InputStreamReader(inputStream)),则二进制数据也会被读取并且无法重新读取。

如何在不读取二进制数据的情况下读取一行?

Ali*_*aka 1

最终手动直接从InputStream中逐字节读取,而不包装InputStream。我尝试过的所有内容,例如 Scanner 和 InputStreamReader,都会提前读取(缓冲)输入:(

我想我错过了一些像 \r 这样的情况。

public static String readLine(InputStream inputStream) throws IOException {
    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    int c;
    for (c = inputStream.read(); c != '\n' && c != -1 ; c = inputStream.read()) {
        byteArrayOutputStream.write(c);
    }
    if (c == -1 && byteArrayOutputStream.size() == 0) {
        return null;
    }
    String line = byteArrayOutputStream.toString("UTF-8");
    return line;
}
Run Code Online (Sandbox Code Playgroud)