📅  最后修改于: 2023-12-03 14:54:48.288000             🧑  作者: Mango
UGC NET CS 2014 年 12 月 – II 的问题 18 针对输入/输出流的理解和使用,考查了程序员的基本知识。输入/输出流是很重要的概念,它涉及到程序与外部环境的交互。程序员需要了解流的类型、使用方法及异常处理等知识点。
在 Java 中,下列哪个选项用于 Java 程序读取从网络连接传入的数据?
A. InputStreamReader B. FileReader C. BufferedReader D. Scanner
正确答案是 A. InputStreamReader。
Java 中的输入/输出流是将数据传输到程序中或从程序中传输数据的方式。程序员必须了解输入/输出流的类型、使用方法及异常处理等重要知识点。在 Java 中,程序可以通过 InputStream 和 OutputStream 接口来定义输入和输出流。
InputStreamReader 是 Java 中将 InputStream 转换为 Reader 的桥梁。通过 InputStreamReader 可以从字节流读取字符流。因此,InputStreamReader 可以用于读取从网络连接传入的数据。
FileReader 是用于读取文件的字符流。BufferedReader 是用于缓冲字符输入流的高级类。Scanner 是用于读取用户输入或文件内容的类。因此,它们不能用于从网络连接读取数据。
下面的代码示例展示了如何使用 InputStreamReader 从网络连接读取数据。
try {
Socket socket = new Socket("localhost", 8080);
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
以上代码演示了从本地主机端口 8080 连接到网络,并使用 BufferedReader 读取从网络连接传入的数据的过程。在 try-catch 语句块中,Socket 类用于创建一个套接字连接,然后获取输入流并使用 InputStreamReader 将字节流转换为字符流。最后使用 BufferedReader 实例化一个缓冲字符输入流,通过 while 循环从流中读取行并输出到控制台。最后释放资源。如果发生异常,则打印异常栈信息。