当前位置: 首页 > 面试题库 >

我应该如何从缓冲的阅读器中阅读?

邵宜年
2023-03-14
问题内容

我有以下从缓冲读取器读取数据的示例:

while ((inputLine = input.readLine()) != null) {
   System.out.println("I got a message from a client: " + inputLine);
}

println每当缓冲读取器中出现某些input情况时(在这种情况下),将执行循环中的代码。在我的情况下,如果客户端应用程序将某些内容写入套接字,则将执行循环中的代码(服务器应用程序中)。

但是我不明白它是如何工作的。inputLine = input.readLine()等待直到缓冲读取器中出现某些内容,当其中出现某些内容时,它将返回true并执行循环中的代码。但是什么时候null可以退货。

还有另一个问题。上面的代码摘自一个方法,throws Exception我在线程的run方法中使用此代码。当我尝试把编译器抱怨throws Exception之前run:重写的方法不会引发异常。没有throws exceptionI,编译器还会有另一个抱怨:​​未报告的异常。那么,我该怎么办?


问题答案:

当另一端的套接字关闭时,读取器应返回一个空字符串。这是您要寻找的条件。要处理异常,请将读取循环包装在try / catch块中。

 try {
   while ((inputLine = input.readLine()) != null) {
     System.out.println("I got a message from a client: " + inputLine);
   }
 }
 catch (IOException e) {
   System.err.println("Error: " + e);
 }

您可能会发现本教程对用Java中的套接字进行读/写操作很有帮助。



 类似资料:
  • 我有以下代码来读取java文件,并打印出行。我通过两种方式实现了它: 使用流: 使用循环: 我被告知这是错误的,使用缓冲读取器是错误地使用了语言的特性。有没有更好的方法,我想知道使用语言功能的正确方法。

  • 问题内容: 在Golang中处理原始IP软件包时,遇到了一个问题,我似乎无法找到以下解决方案: 在IPv4的说明书中包含有大于8位小字段。例如,版本或报头长度(每个4位)或标志(3位)。 如何从io.Reader中读取这些值,然后再使用Golang处理它们?到目前为止,我一直在使用binary.Read方法,但是由于Golang中最小的整数类型是int8,因此在这种情况下是不可能的。 问题答案:

  • 问题内容: 我需要从请求中获取所有参数,包括“#”之后的内容。示例:请求:http:// myserver / m#q = abc 我需要我的服务器获取“#”之后的所有参数,因为它们在“?”之后的位置 我怎样才能做到这一点?10倍,Koby 问题答案: 请求资源时,客户端不会将RFC 1738 中所指的锚点或URL片段发送给服务器。理由是片段URL用于标识资源内的位置,而不是服务器上的其他资源。为

  • 反向代理是可行的。我怎样才能得到响应体?

  • 在问题[1]中,我了解到如果您想在Android下使用NFC标签,则不必采用NDEF格式。我想在Win 8.1 in. Net下执行此操作。我的情况是这样的: 我有一个RFID卡Mifare Classic 1K,其中存储了一个ID。(由制造商记录)该ID由我们的考勤系统通过通常的RFID读取器(例如Gigatek的PROMAG MFR120)读取。我们不在卡上写任何东西,我们只需要读取ID。但是

  • 欢迎来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点: 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。 Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。 Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感觉起来比典型的面向对