【问题标题】:BufferedReader, other Object to get a StringBufferedReader,其他Object获取String
【发布时间】:2011-01-15 12:01:55
【问题描述】:

在java中还有另一个像BufferedReader这样的对象来读取服务器接收的数据?? 因为服务器发送一个没有换行符的字符串,并且客户端在服务器关闭连接表单超时之前不打印任何字符串(超时消息有换行符!),在客户端打印所有收到的消息和服务器发送的超时消息之后! 帮帮我谢谢!!

【问题讨论】:

  • 这里是 Java API:java.sun.com/javase/6/docs/api - 学习如何使用它。
  • 迈克尔,这没什么用。接近一个完整的类库或框架可能是相当艰巨的。如果你所做的只是一些小文本文件或控制台 I/O(对于初学者编程任务来说并非不合理),那么 BufferedReader 可能真的是他们唯一知道的东西(嘿,它有一个 readLine() 方法,这绝对是方便的)。
  • 乔伊:虽然迈克尔的评论本质上可能是尖刻的,但他的建议是合理的。每个精通 Java 的人都知道如何在 Java API 中找到自己的方法,并在他们遇到与您的问题相似的问题时将其用作他们的第一个来源。学习如何在 Java API 中查找内容至关重要。 Java 也有幸拥有最好的 API 文档集之一。

标签: java bufferedreader


【解决方案1】:

只是不要使用readLine() 方法按换行符读取,而是使用read() 方法逐字符读取。

for (int c = 0; (c = reader.read()) > -1;) {
    System.out.print((char) c);
}

【讨论】:

    【解决方案2】:

    您要求使用另一个类,所以在这种情况下,请尝试使用 Scanner。它通常用于基于模式或从输入推断的类型(例如,逐字节读取或逐整数读取,或它们的某种组合)来分隔输入。但是,您也可以在此处将其仅用作通用“阅读器”,以涵盖您的用例。

    【讨论】:

      【解决方案3】:

      当您从服务器读取任何内容时,您必须严格遵守通信协议。例如,服务器可能是 HTTP 服务器或 SMTP 服务器,它可能会在发送数据之前对其进行加密,某些数据可能会以不同的方式编码,等等。

      所以你基本上应该问:我想访问什么样的服务器?它如何将字节发送给我?其他人是否已经完成了解释字节的工作,以便我可以快速获取我真正想要的数据?

      如果是HTTP服务器,可以使用代码new URL("http://example.org/").openStream()。然后你会得到一个字节流。如何将这些字节转换为字符、字符串和其他内容是另一项任务。

      【讨论】:

        【解决方案4】:

        你可以试试

        InputStream is = ... // from input
        String text = IOUtils.toString(is);
        

        将输入转换为文本,不带换行符(它也保留原始换行符)

        【讨论】:

          猜你喜欢
          • 2012-10-13
          • 1970-01-01
          • 2020-08-27
          • 2014-08-26
          • 2020-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多