【发布时间】:2013-02-04 10:54:10
【问题描述】:
一个简单的程序
DataInputStream in = new DataInputStream(System.in);
while(true)
System.out.println(in.readUTF());
表现有些奇怪:它拒绝输出输入的文本...我使用终端向其中输入一些文本,但输出中没有任何内容。它有什么问题?
【问题讨论】:
标签: java datainputstream
一个简单的程序
DataInputStream in = new DataInputStream(System.in);
while(true)
System.out.println(in.readUTF());
表现有些奇怪:它拒绝输出输入的文本...我使用终端向其中输入一些文本,但输出中没有任何内容。它有什么问题?
【问题讨论】:
标签: java datainputstream
一点也不奇怪。 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);
}
【讨论】: