【Java】の基础——IO
来源:互联网 发布:python config.get 编辑:程序博客网 时间:2024/06/03 11:24
Java IO
Java IO即Java 输入输出系统。
流
在Java IO中,流是一个核心的概念。流从概念上来说是一个连续的数据流。你既可以从流中读取数据,也可以往流中写数据。流与数据源或者数据流向的媒介相关联。
在Java IO中流既可以是字节流(以字节为单位进行读写),也可以是字符流(以字符为单位进行读写)。
IO的类型
从是读媒介还是写媒介的维度看,Java IO可以分为:
输入流:InputStream和Reader
输出流:OutputStream和Writer
而从其处理流的类型的维度上看,Java IO又可以分为:
字节流:InputStream和OutputStream
字符流:Reader和Writer
字节流和字符流的相互转换
- 从字节流到字符流:InputStreamReader、OutputStreamWriter类可以实现。
- 从字符流到字节流:可以从字符流中获取char[]数组,转换为String,然后调用String的API函数getBytes() 获取到byte[],然后就可以通过ByteArrayInputStream、ByteArrayOutputStream来实现到字节流的转换。
buffer缓冲流
BufferedInputStream和BufferedOutputStream,BufferedReader和BufferedWriter
在进行磁盘或网络IO时,原始的InputStream对数据读取的过程都是一个字节一个字节操作的,而BufferedInputStream在其内部提供了一个buffer,在读数据时,会一次读取一大块数据到buffer中,这样比单字节的操作效率要高的多,特别是进程磁盘IO和对大量数据进行读写的时候。
网络媒介的IO:
同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO
Java BIO :
同步并阻塞,服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销,当然可以通过线程池机制改善。
Java NIO :
同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。
Java AIO(NIO.2) :
异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理.
- java基础—IO
- 【Java】の基础——IO
- Java基础——IO
- java基础学习—IO
- Java基础—IO流
- java基础—-IO流
- java基础—IO流
- java基础—IO流
- Java基础——Java IO详解
- Java基础——IO(流)
- 【Java基础】——IO:概念原理
- Java基础(十二)——IO流
- java基础——IO流
- Java基础——IO流
- java基础——IO总结
- 黑马程序员——Java基础---IO
- java基础——IO流
- JAVA基础——IO流
- Mark待练习的东西
- 我骄傲的字符串连接
- Linked server和SSIS连接Oracle时的常见问题(一)
- JAVA hashCode()和equals()方法详解
- 大前端之路----跨域
- 【Java】の基础——IO
- Linked server和SSIS连接Oracle时的常见问题(二)
- 对比电容理解电感
- uva315
- ACM复习(3)1139 约瑟夫环问题
- 31. Next Permutation
- selenium之终极封装
- 【Leetcode-Medium-22】Generate Parentheses
- CCS5.5新建工程