IO与NIO 接口与类关系图
2017-02-12 22:43:12 0 举报
Java的IO和NIO都是用于处理输入输出流的,但是它们的接口和类关系图有所不同。在Java 7之前,IO主要有4个抽象类和一些相关的接口,包括InputStream、OutputStream、Reader和Writer等。而NIO则提供了更加高效的文件处理方式,它的主要组件包括Channel、Buffer和Selector等。在Java 7之后,NIO被引入了新的API,包括Files、Paths和FileSystem等。这些新API提供了更加简洁和易用的API,使得开发者可以更加方便地处理文件和目录。总之,Java的IO和NIO都是非常实用的技术,可以帮助开发者更好地处理输入输出流。
作者其他创作
大纲/内容
去注册一或多个Channel
Channel.write(Buffer)
Selector
+ select() : 开始保持阻塞直到注册的channl有任何一个有事件出来
。。。。
ServerSocketChannel
监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel
Pipe【管道】
- sink:Pipe.SinkChannel【数据入口通道】-source:Pipe.SinkChannel【数据出口通道】
+ sink():Pipe.SourceChannel+ source():Pipe.SourceChannel
MappedByteBuffer
表示内存映射文件
Buffer
- capacity : int【buffer的固定大小值】- position : int【下一个可插入数据的位置,初始为0,最大是cap-1】- limit : int【最多写入:limit = cap 个数据;可以读取第limit = position(写)之前写入的所有数据】- mark : int【临时标记当前的position位置】+get():byte[]【读取数据】+put(byte[]):void【写数据】+filp():void【切换模式:写模式 - 读模式】+rewind():void 【重读,pos重置为0】+clear():void 【pos=0,limit=cap,重新供写入】+compact():void【所有未读数据提到内存前面,pos=最后一个未读元素之后的位置,limit=cap,重新供写入】+mark() and reset() 【mark特定pos,reset可以回到该pos】
FileChannel【文件存取通道】
+transferFrom() 【与其他Channel传输数据】+size():int 【相连文件的大小】+truncate(N) 【截取文件的前N个字节数据】+ force(boolean)【将channel中仍未写入磁盘的内容强行下乳磁盘,boolean表示:是否同时将文件元数据(权限信息等)写到磁盘上】
CharBuffer
IntBuffer
分散(scatter)
【读】Channel读取数据到多个Buffer中(按数组顺序,当一个buffer被写满后,channel紧接着向另一个buffer中写)
聚集(gather)
【写】将多个buffer的数据写入同一个Channel
Channer.read(Buffer)
ByteBuffer
通道涵盖了UDP 和 TCP 网络IO,以及文件IO
Channel
read(Buffer):int【读取到buffer】read(Buffer[]):int【分散读取】write(Buffer):int【写入到buf】write(Buffer[]):int【聚集】
ShortBuffer
DatagramChannel
UDP数据包xxxx
非阻塞状态:NBIO
阻塞状态:BIO
SocketChannel
TCP 套接字xxxx
收藏
收藏
0 条评论
回复 删除
下一页