合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## 根据流的流向来分类 IO流是两种流:Input流(输入流)和Output流(输出). 从程序出去的叫输出.在java中所有的输出,输入是相对于java程序的. ![](https://box.kancloud.cn/4a6494e0ccbb931a29a18a0f4d9a59ca_974x494.png) ## 根据流操作的数据来分类 1. 字符流:只能操作普通文本文件,最常见的是.txt,.java. 只要用文本工具可以打开的,并且能看懂的都是文本文件. 2. 字节流:操作字节,能操作一切文件.视频,图片,音频都可以. ## java四大流 1. 字符输入流:共同父类Reader,功能是读取字符.读取一个字符,读取一个字符数组. 子类FileReader,BufferedReader 2. 字符输出流:共同父类Writer,功能是写一个字符,一个字符数组.一个字符串.子类FileWriter,BufferedWriter. 3. 字节输入流.共同父类InputStream,功能是读取一个字节,读取一个字节数组.子类FileInputStream,BufferedInputStream. 4. 字节输出流.共同父类OutputStream,功能是写入一个字节,写入一个字节数组.子类FileOutputStream,BufferedOutputStream. ## 规律 1. 只要是输入流,此流的方法名一定叫read,只要是输出流,方法名一定叫write. 2. java中流 的命名是十分规范的: 功能+父类的名字. ## 一切皆字节 在数据传输过程中,一切数据(文本,图像,声音)等最终存储的均为一个个字节,即二进制数字.所以数据传输过程中使用二进制数据可以完成任意数据的传递. 为什么打开一个文本文件,我们看到的不是01010001这些数据?我们向一个文件中存储一定的数据(一些数字),如果使用文本方式打开,则会以文本的方式解释数据,如果以视频的方式打开,则会以视频的方式解释数据.音频,可执行文件等亦是如此.所以,在文件传输过程中,我们要时刻明确,传输的始终为二进制数据.