在Java中,我们可以使用Scanner类来获取输入,但它不如IO Package的BufferedReader高效。 在初始化Scanner类的对象或BufferedReader类的对象时,我们使用InputStream“System.in”。 与FileDescriptor.in相比,System.in是否良好?
就像我将System.in与BufferedReader一起使用:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
使用FileDescriptor.in:
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(FileDescriptor.in), "ASCII"));
打印时也一样:
使用System.out OutputStream:
System.out.println("Hello World!");
将FileDescriptor.out与BufferedWriter一起使用:
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(FileDescriptor.out),"ASCII"), 512);
答案 0 :(得分:1)
与System.in
相比,您的问题似乎“FileDescriptor.in
是否合适?”
数目:
System.in
更改System.setIn
,但FileDescriptor.in
始终指向相同的IO源(当您运行程序时,除非您使用本机代码),因此如果使用本机代码则不太灵活你使用FileDescriptor.in
。System.in
已缓冲,那么任何替代方案也需要缓冲。第2点的证明在System
类的源代码中:
FileInputStream fdIn = new FileInputStream(FileDescriptor.in);
// ...
setIn0(new BufferedInputStream(fdIn));
您从System.in
获得的标准流是从FileInputStream
读取的FileDescriptor.in
,但出于性能原因,其中包含BufferedInputStream
(它改进了小读数的表现。)