【发布时间】:2021-07-23 14:28:13
【问题描述】:
我正在尝试使用 InputStream o DataInputStream 读取带有 System.in 的字符串,也许我可以使用 BufferedInputStream,但我不知道如何使用它,我正在寻找但我不明白它是如何使用的有效,我正在尝试做这样的事情。
import java.io.*;
public class Exer10 {
public static void main(String[] args) throws IOException {
InputStream is = System.in;
DataInputStream dis = new DataInputStream(is);
try {
while (true){
dis.readChar();
}
} catch (EOFException e){
}
}
}
这里的问题是我在 System.in 中循环,因为方法“readChar”在循环中,但是如果我将“dis.readChar()”放在另一个位置,这只会返回一个字节,你能帮帮我吗?
我找到的解决方案是我可以将它放在一个字节数组中,但这并不能解决任何问题,因为如果我这样做,文件必须始终具有相同的长度,而这个长度不能被移动。像这样的:
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class Exer10 {
public static void main(String[] args) throws IOException {
InputStream is = System.in;
DataInputStream dis = new DataInputStream(is);
byte[] bytes = new byte[10];
dis.read(bytes);
}
}
【问题讨论】:
-
只需使用:Scanner sc = new Scanner(System.in); while (
) { String line = sc.nextLine(); .... } sc.close(); -
您为什么不按照
DataInputStream.readLine()上的JavaDoc 的建议进行操作,并将其包装在BufferedReader中并使用该类'readLine(),直到您不再获得更多数据?然后只需将您读到的字符串合并为一个,例如通过将它们附加到StringBuilder。当我们在做的时候:你到底想做什么?从命令行读取输入?
标签: java inputstream fileinputstream datainputstream