BufferedReader,其他Object获取String

时间:2011-01-15 12:01:55

标签: java bufferedreader

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

4 个答案:

答案 0 :(得分:2)

请勿使用readLine()方法读取换行符,但使用read()方法读取char-by-char。

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

答案 1 :(得分:2)

您要求使用其他课程,因此在这种情况下,请尝试Scanner。它通常用于基于模式或从输入推断出的类型来界定输入(例如,逐字节读取或逐个int读取,或其某种组合)。但是,您也可以将它用作通用“读者”,以涵盖您的用例。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

你可以尝试

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

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