在Java中,我们可以使用Scanner类获取输入,但是它不如IO包的BufferedReader高效。在初始化Scanner类的对象或BufferedReader类的对象时,我们使用InputStream "System.in“。System.in比FileDescriptor.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);
发布于 2018-05-01 10:07:40
看来你的问题是:“与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获得的标准流是一个从FileDescriptor.in读取的FileInputStream,但是由于性能原因,它周围有一个BufferedInputStream (它提高了小读取的性能)。
https://stackoverflow.com/questions/50114471
复制相似问题