一. I/O of software system
输入是系统接收的信号或数据,输出是从其发送的信号或数据。
I/O设备是人(或其他系统)用来与计算机通信的硬件.
以下为内存的层次结构:
I/O of software system:
二. Java I/O APIs
java.io in JDK:
Reading/Writing from/to text files:
Reading/writing from/to bin files:
三. Java nio APIs
在软件系统中,I/O的读写速度比内存慢.大多数情况下的I/O 读写会成为系统的平静,限制系统的效率.提高I/O速度对于提高系统的整体性能具有很大的帮助.于是,便有了NIO(New I/O).
1.Using Buffer to speed up I/O
Buffer是什么: Buffer是物理存储器的一个区域,用于在数据从一个地方移动到另一个地方时临时存储数据.大多数Buffer都是用软件实现的,由于与硬盘驱动器相比,访问时间更快,因此通常使用更快的RAM来存储临时数据/
不使用Buffer进行写测试:
测试结果:
使用Buffer进行写测试:
测试结果:
使用Buffer提高读性能:
通过以上测试可以看出,在使用了Buffer后,写时间大大下降,从88ms减少到32ms.
由此可见,使用Buffer可以显著提高I/O性能.
2.Channels
什么是Channels:Channels是java.nio中的一个新的抽象概念,它被定义在java.nio.channels包中. Channels是一个用来在打开的file或socket上执行I/O操作以及若干控制操作的handle.java.nio将channel与RandomAccessFile, FileInputStream,FileOutputStream, Socket, ServerSocket or DatagramSocket相联系.
使用Channels: