15.8.2 输入流与输出流如何区分,各有什么作用

答:初学Java,看到输入流与输出流的部分,有一点不明白,到底是输入流写入还是输出流写入文件呢?要将文件读出是用输入流还是输出流好呢?

程序在内存中运行,文件在磁盘上,把文件从磁盘上读入内存中来,这就需要输入流。反之,把内存中的数据写到磁盘上的文件里就是输出。

那与Windows里所说的写(将内容写入到文件里,如存盘)—输入和读(把内容从文件里读出来,如显示)输出,为什么不一样呢?

是不是可以这样理解:Java里的输入流与输出流针对内存而言,它是从内存中读写,而不是所说的显示与存盘,因为输入流与输出流都可以将内容从屏幕上显示出来。

屏幕和键盘也是区别于内存的设备,可以将内存中的数据“输出”到屏幕上,所以要用“System.out.println()”,而从终端读取键盘输入用“System.in”。

那写文件该用输入流还是输出流呢?读文件又用什么好呢?为什么?

程序操作的数据都应该是在内存里面,内存是操作的主对象,把数据从其他资源中传送到内存,就是输入。反之,把数据从内存传送到其他资源,就是输出。例如读文件:


BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream("infilename")));


不管从磁盘读、从网络读,还是从键盘读,读到内存,就是“InputStream”。例如:写文件:


BufferedWriter out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream("outfilename")));


不管写到磁盘、网络,或者屏幕,都是使用“OuputStream”。