9、Java IO
9.1 java 中 IO 流分为几种?
| 按功能来分 | 输入流(input)、输出流(output) |
|---|---|
| 按类型来分 | 字节流(8Byte)和字符流(16Byte) |
字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。
9.2 BIO、NIO、AIO 有什么区别?
| BIO | Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。(一个请求独占一个线程) |
|---|---|
| NIO | New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。(多了线程池的概念,请求排队) |
| AIO | Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。(多了缓冲区的概念,写完读完就丢在缓冲区,留在操作系统有空在处理) |

9.3 Files的常用方法都有哪些?
Path path = Paths.get(“E:/Demo.txt”);
Path path2 = Paths.get(“E:/Demo”);
Path path3 = Paths.get(“E:/Demo02.txt”);
| 方法 | 作用 |
|---|---|
| Files.exists(path) | 检测文件路径是否存在(Boolean) |
| Files.createFile(path) | 创建文件 |
| Files.createDirectory(path2) | 创建文件夹 |
| Files.delete(path2) | 删除一个文件或目录 |
| Files.copy(path, path3) | 复制文件(path复制到path3) |
| Files.move(path,path3) | 移动文件(支持移动(不同目录下)、改名(同目录下,推荐使用)、覆盖文件(同名)操作) |
| Files.size(path) | 返回文件大小,以字节为单位 |
| Files.read() | 读取文件 |
| Files.write() | 写入文件 |
10、字节流如何转为字符流
字节输入流转字符输入流通过 InputStreamReader 实现,该类的构造函数可以传入 InputStream 对象。
字节输出流转字符输出流通过 OutputStreamWriter 实现,该类的构造函数可以传入 OutputStream 对象
版权声明:本文为qq_45912388原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。