java 中 IO 流有哪些?
按数据流向:输入流和输出流
输入和输出都是从程序的角度来说的。输入流:数据流向程序;输出流:数据从程序流出。
按处理单位:字节流和字符流
字节流:一次读入或读出是8位二进制;字符流:一次读入或读出是16位二进制。
JDK中后缀是Stream是字节流;后缀是Reader,Writer是字符流。
按功能功能:节点流和处理流
节点流:直接与数据源相连,读入或写出;处理流:与节点流一块使用,在节点流的基础上,再套接一层。
最根本的四大类:InputStream(字节输入流),OutputStream(字节输出流),Reader(字符输入流),Writer(字符输出流)
四大类的扩展,按处理单位区分
InputStream: FileInputStream、PipedInputStream、ByteArrayInputStream
BufferedInputstream、SequenceInputStream、DataInputStream、ObjectInputStream
OutputStream:FileOutputStream、PipedOutputStream、ByteArrayOutputStream
BufferedOutputStream、DataOutputStream、ObjectOutputStream、PrintStream
Reader: FileReader、PipedReader、CharArrayReader
BufferedReader、InputStreamReader
Writer: FileWriter、PipedWriter、CharArrayWriter
BufferedWriter、InputStreamWriter、PrintWriter
常用的流
对文件进行操作:FileInputStream(字节输入流)、FileOutputStream(字节输出流)、FileReader(字符输入流)、FileWriter(字符输出流)
对管道进行操作:PipedInputStream(字节输入流)、PipedOutStream(字节输出流)、PipedReader(字符输入流)、PipedWriter(字符输出流)。
PipedInputStream的一个实例要和PipedOutputStream的一个实例共同使用、共同完成管道的读取写入操作。主要用于线程操作。
字节/字符数组:ByteArrayInputStream、ByteArrayOutputStream、CharArrayReader、CharArrayWriter是在内存中开辟了一个字节或字符数组。
Buffered缓冲流::BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter
带缓冲区的处理流、缓冲区的作用的主要目的是:避免每次和硬盘打交道、提高数据访问的效率。
字节转化成字符流:InputStreamReader、OutputStreamWriter
数据流:DataInputStream、DataOutputStream
数据流可以直接输出float类型或long类型、提高了数据读写的效率
打印流:printStream、printWriter
对象流:ObjectInputStream、ObjectOutputStream
序列化流:SequenceInputStream
【Java面试题与答案】整理推荐