输入输出流

来源:互联网 发布:java api文档英文版载 编辑:程序博客网 时间:2024/04/30 17:37

常用的IO流
这里写图片描述
流的分类:
按数据方向分:输入流和输出流。
输入流:InputStream/Reader
输出流:OutputStream/Writer
按数据类型分:字节流和字符流。
字节流: InputStream/OutputStream
InputStream类为所有字节输入流的父类。System.in是字节输入流
文件输入输出流:FileInputStream,FileOutputStream

字符流: Reader/Writer
Java技术提供Unicode表示字符串和字符,提供16位的流,
桥梁流:InputStreamReader和OutputStreamWriter,字节转换为字符流的转换器
逐行读写流:BufferedReader/BufferedWriter
管道流:进行两个线程间的通信
PipedOutputStream,PipedInputStream

java.io.File用于表示文件(目录),也就是说程序员可以通过File类在程序中操作硬盘上的文件和目录。 File类只用于表示文件(目录)的信息(名称、大小等),不能对文件的内容进行访问
File代表文件系统中对文件/目录的管理操作(增删改查,CRUD)

关于字节流和字符流的区别
1、字节流读取的时候,读到一个字节就返回一个字节。字符流使用了字节流读到一个或多个字节(中文对应的字节是两个,UTF-8码表中是三个)时,先去查指定的编码表,将查到的字符返回。
2、字节流可以处理所有类型数据,如图片,mp3等。 字符流只能处理字符数据。
3、实际上字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的,但是字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件的。只要是处理纯文本数据,就要优先考虑使用字符流。除此之外都使用字节流。