输入输出流
流:在Java中,将这种通过不同输入输出设备(键盘、内存、显示器、网络等)之间的数据传输
程序允许通过“流”的方式与输入输出设备进行数据传输
输入流:运行在内存中的应用程序,如果想从一些地方来获得数据,例如键盘、文件、光笔等等,此时可以使用上述来源创建输入流,并从上述输入流中读取数据。
输出流:内存中的应用程序可以通过输出流把数据输出到指定的目的地,包括显示器、文件、打印机等等。其中输出到显示器一般称为标准输出。
C语言中的printf函数、Java语言中的System.out指的就是标准输出。
![5186d9c1bcfc5fe6ece788c70fa4f552.png](https://i-blog.csdnimg.cn/blog_migrate/29ba686cfb3724e41d85b708f46eac67.jpeg)
输出流工作原理
![63b11b9958b8dfbdf1cf6fc90b8df49a.png](https://i-blog.csdnimg.cn/blog_migrate/30c95efcb28f88cd5fae92399a535199.jpeg)
输入流工作原理
二进制流(字节流):上图中,流的内容是0 1 的二进制序列,所以这种流一般被称为字节流,也是二进制流。
字符流:流的内容也可以是字符。此处的字符不仅是指英文字符,也包括任何字符,例如UTF字符编码中的任意字符。
JAVA中的I/O体系
Java API 中与输入输出有关的类主要在 java.io包和java.nio包中。
![49f6d098996c78bd4359b88c8e120f0f.png](https://i-blog.csdnimg.cn/blog_migrate/009effb976e93fb98630153916dc78be.jpeg)
Java I/O类中的IO流类
- 可以分为字节流和字符流。
- 字节流根据输入和输出可以分为InputStream和OutputStream。
- 同理,字符流则可以分为Reader和Writer。
- 上述四个类是Java I/O中的核心类,都是抽象类。
- 以InputStream结尾的类表示字节流中的输入流。
- 以OutputStream结尾的类表示字节流中的输出流。
- 以Reader结尾的类表示字符流中的输入流。
- 以Writer结尾的类表示字符流中的输出流。
- 需要说明的是,无论是访问本地的输入输出设备或文件,还是访问网络上的其它计算机上的资源,都需要使用Java I/O类。