Java是否有一个简单的方法来从InputStream中读取一行而不进行缓冲? BufferedReader不适合我的需求,因为我需要通过相同的连接重复传输文本和二进制数据,并且缓冲仅仅是阻碍。从InputStream读取没有缓冲的行
2
A
回答
0
你可以尝试Scanner类:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html
然而,这可以缓冲输入,如果没有换行符存在:
由于这种方法会继续在输入寻找搜索行 分隔符,如果没有 行分隔符存在,它可能会缓存搜索要跳过的行的所有输入。
+0
扫描仪缓冲输入甚至超过换行符:( –
+0
'Scanner'确实缓冲区超过换行符,我有一个'StringR eader'有七条线和'Scanner'将它们全部缓冲在一起。 –
-1
4
最终它是直接从InputStream中直接读取byte后的字节,而没有包装InputStream。一切我想,像扫描仪和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;
}
相关问题
- 1. 从InputStream读取
- 2. 从磁盘缓冲读取
- 3. 从缓冲区读取C
- 4. 从InputStream中读取
- 5. 套接字缓冲读取器从来没有准备好
- 6. 读取TCP缓冲
- 7. 取消读取从InputStream
- 8. 按行读取缓冲区行内容
- 9. VHDL - 从VGA的帧缓冲读取
- 10. 如何缓冲从sqlite3的读取bitarrary
- 11. Java - 使用InputStream读取行
- 12. 从Java进程读取InputStream
- 13. expectJ - 从spawn.send()读取InputStream()
- 14. 无法从HttpListenerRequest读取InputStream
- 15. 从InputStream读取字节块
- 16. Bash读取行缓冲区溢出
- 17. 如何从paquet读取缓冲区(tftp)
- 18. 从插座读取缓冲区
- 19. NodeJS从缓冲区读取ASCII码
- 20. avro php - 从缓冲区读取
- 21. 读取缓冲区C++
- 22. C++缓冲文件读取
- 23. 未读取uart缓冲区
- 24. boost asio读取缓冲区
- 25. FileStream.Seek与缓冲读取
- 26. AWS Lambda - 缓冲读取器
- 27. 缓冲区没有正确的行为
- 28. 什么让文件读取没有缓冲区如此昂贵?
- 29. 我应该如何从缓冲读取器读取数据?
- 30. 无法从缓冲读取器读取android
通过二进制数据,你不必行,对吗?如何识别您的数据是文本还是二进制? – belgther
我确实拥有它们。请求以描述它的文本行开始,有时后跟二进制数据。 – Ree
可能的重复:http://stackoverflow.com/questions/25215564/how-to-read-a-line-from-inputstream-without-buffering-the-input –