gpt4 book ai didi

Java InputStreamReader 尝试读取整个流?

转载 作者:行者123 更新时间:2023-12-01 06:22:01 33 4
gpt4 key购买 nike

我正在尝试从 Socket 读取 UTF-16 字符串。关键是在读取字符串的前几个字符之前我不知道它的长度(以字节为单位)。

所以我像这样打开了InputStreamReader:

InputStreamReader reader = new InputStreamReader(inputStream, "UTF-16");

然后我尝试逐个字符地阅读它。

reader.read();

尝试读取第一个字符时它挂起!

在调试过程中,我意识到它看起来像 InputStreamReader 有点尝试读取整个 InputStream,然后将其转换为 UTF-16 字符序列。当然,它一直到字符串末尾,那里什么也没有,所以它只是等待客户端发送更多字节。

这真的是InputStreamReader 的工作方式吗?如果是 - 我如何读取 UTF-16 InputStream 的一部分,或者更好的是单个字符,而不到达末尾?

最佳答案

如果我明白你的意思,你应该使用 byte[] 和

将你的输入流转换为字符串
IOUtils.toString(inputStream, StandardCharsets.UTF_8);

那么你应该能够迭代它

或直接

FileUtils.readFileToByteArray(new File(path))

如果你想从文件中获取一个byte[]

关于Java InputStreamReader 尝试读取整个流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51539873/

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