IO流总结:深入理解与实践指南
Java IO流简介
Java IO流是Java提供的一种数据输入输出机制,用于实现程序与外部世界之间的数据交换。IO流按照数据的读取和写入方式,分为两大类:字节流和字符流。
字节流
字节流主要用于二进制数据的读写,代表类有:
-
InputStream
:所有输入字节流的基类。 -
OutputStream
:所有输出字节流的基类。
字符流
字符流在字节流的基础上,通过字符编码表将字节转换为字符,代表类有:
-
Reader
:所有输入字符流的基类。 -
Writer
:所有输出字符流的基类。
Java IO流的分类
基本流
基本流直接从数据源读取或向数据源写入原始数据。
包装流
包装流通过装饰基本流来提供额外的功能,如缓冲、转换等。
过滤流
过滤流是对基本流或包装流的进一步加工,提供特定的功能,如数据压缩、加密等。
管道流
管道流主要用于线程间的通信。
Java IO流的使用
文件读写
使用FileInputStream
和FileOutputStream
进行文件的读写操作,或使用它们的缓冲区版本BufferedInputStream
和BufferedOutputStream
提高读写效率。
转换流
使用InputStreamReader
和OutputStreamWriter
在字节流和字符流之间进行转换。
打印流
使用PrintStream
和PrintWriter
简化数据的打印操作。
面试题
-
Java中IO流分为哪几类?
-
分为字节流和字符流。字节流用于读写二进制数据,字符流用于读写字符数据。
-
-
BIO、NIO和AIO的区别是什么?
-
BIO是阻塞式IO,线程在IO操作时会被阻塞。NIO是新IO,提供了非阻塞IO能力。AIO是异步IO,允许应用程序在IO操作时不被阻塞。
-
-
什么是缓冲区(Buffer)?
-
缓冲区是一个内存区域,用于在读写操作中临时存储数据。
-
-
FileInputStream和BufferedInputStream有什么区别?
-
FileInputStream是基本的字节输入流,而BufferedInputStream是包装了其他输入流的缓冲流,提供了缓冲功能以提高效率。
-