与System.in一起使用Java DataInputStream

时间:2013-02-04 10:54:11

标签: java datainputstream

一个简单的程序

    DataInputStream in = new DataInputStream(System.in);
    while(true)
        System.out.println(in.readUTF());

表现得有些奇怪:它拒绝输出输入文本...我使用终端输入一些文本,但输出中没有任何内容。怎么了?

3 个答案:

答案 0 :(得分:3)

这根本不奇怪。 readUTF期望DataOutputStream编写的非常具体的长度前缀格式。这不是您的终端将提供的。有关详细信息,请参阅DataInput.readUTF中的文档。

您通常只需使用Scanner或围绕InputStreamReader创建System.in,并围绕该BufferedReader创建BufferedReader.readLine(),并使用{{1}}。

答案 1 :(得分:2)

DataInputStream用于读取二进制数据。 readUTF需要一个两字节无符号长度,后跟UTF-8中的字符。 (如果你是intreested,你可以阅读它的文档提示,提示)

我怀疑你打算使用的是用于阅读文字的Scanner。

Scanner in = new Scanner(System.in);
while(in.hasNextLine())
    System.out.println(in.nextLine());

答案 2 :(得分:0)

你能尝试吗

String str;
while((str = in.readUTF()) != null) {
     System.out.println(str);
}