了解BufferedReader和InputStreamReader

时间:2017-12-06 04:23:44

标签: java server

我无法理解这条线在服务器方面的作用。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

我已经读过其他的S.O线程,但我仍然无法理解该线路的作用。

如果有人想用C代码进行类比,我对C非常有信心,谢谢。

1 个答案:

答案 0 :(得分:-2)

System.in是标准输入。

InputStreamReader允许您关联从指定输入读取的流(在本例中为标准输入),所以现在我们有了一个流。

BufferedReader是一个“抽象”,可以帮助您使用流。例如,它实现readLine而不是逐个字符地阅读,直到找到'\ n'来获取整行。它只是在这个进程后返回一个String。

在C中,没有“字符串”你必须使用字符数组,但你可以从stdin读取数据到类似的字符数组:

char input[100];
...
scanf("%99[^\n]", input);

fgets (input, 100 , stdin)

在C ++中,你可以使用:

using namespace std;

string line;
getline(cin, line);

<强>的BufferedReader

从字符输入流中读取文本,缓冲字符,以便有效地读取字符,数组和行。可以指定缓冲区大小,或者可以使用默认大小。对于大多数用途,默认值足够大。通常,由Reader构成的每个读取请求都会导致相应的读取请求由基础字符或字节流构成。因此,建议将BufferedReader包装在任何read()操作可能代价高昂的Reader上,例如FileReaders和InputStreamReaders。

<强>的BufferedReader#的readLine()

阅读一行文字。一条线被认为是由换行符('\ n'),回车符('\ r')或回车符后面的任何一个终止。

<强> InputStreamReader的

InputStreamReader是从字节流到字符流的桥接器:它使用指定的字符集读取字节并将其解码为字符。它使用的字符集可以通过名称指定,也可以明确指定,或者可以接受平台的默认字符集。每次调用一个InputStreamReader的read()方法都可能导致从底层字节输入流中读取一个或多个字节。为了有效地将字节转换为字符,可以从基础流中提取比满足当前读取操作所需的更多字节。

<强>系统

System类包含几个有用的类字段和方法。它无法实例化。

System类提供的功能包括标准输入,标准输出和错误输出流;访问外部定义的“属性”;加载文件和库的方法;以及一种快速复制数组部分的实用方法。

<强> System.in

“标准”输入流。此流已打开并准备好提供输入数据。通常,此流对应于键盘输入或主机环境或用户指定的其他输入源。

See