Java DataInputStream 与 System.in 的使用



一个简单的程序

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

行为有点奇怪:它拒绝输出输入的文本...我使用终端在其中输入一些文本,但输出中没有任何内容。怎么了?

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

您通常应该只使用Scanner或围绕System.in创建一个InputStreamReader,并围绕它创建一个BufferedReader,并使用BufferedReader.readLine()

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

我怀疑您打算使用的是旨在读取文本的扫描仪。

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

你能试试吗

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

相关内容

  • 没有找到相关文章

最新更新