Java是否有一种简单的方法无需缓冲就可以从InputStream读取行?BufferedReader不适合我的需要,因为我需要通过同一连接反复传输文本和二进制数据,并且缓冲会妨碍您的工作。
最终,它手动地直接从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)
您可以尝试 Scanner 类:http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html
但是,如果不存在换行符,这可能会缓冲输入:
由于此方法继续搜索输入以查找行分隔符,因此如果不存在行分隔符,它可能会缓冲搜索要跳过的行的所有输入。
| 归档时间: |
|
| 查看次数: |
2471 次 |
| 最近记录: |