NIO随笔
来源:互联网 发布:淘宝虚假交易新规 编辑:程序博客网 时间:2024/06/05 22:45
nio 中提高流的读取速度是通过类似操作系统执行I/O的方式: 通道和缓冲器,在thinking in Java 中进行了形象的比喻:把它想像成一个煤矿,
通道是一个包含煤层的矿藏,而缓冲器则是派送到矿藏的卡车。而我们说的这个缓冲器是ByteBuffer;通道是FileChannel.
在I/O流中有三个流被修改可以产生通道:FileInputStream,FileOutputStream,RandomAccessFile 通过getChannel方法。
ByteBuffer 通过allocate()分配大小,nio的目标就是快速移动大量数据,所以ByteBuffer的大小显得尤为重要(通过实际运行的应用程序来找到最佳的尺寸)
或者可以应用allocateDirect()产生一个与操作系统有更高耦合性的“直接”缓冲器.但缺点是这种分配的开支会更大,而且会随着操作系统的不同而不同。
//将一个文件的内容复制到另一个文件中public class ChannelCopy{ public static void main(String [] args){ if (args.length != 2){ System.out.print("没有运行参数") } FileChannel in = new FileInputStream(filePath).getChannel(), out = new FileOutPutStream(filePath).getChannel(); ByteBuffer buffer = ByteBuffer.allocate(1024); while (in.read(buffer) != -1){ buffer.flip(); out.write(buffer); buffer.clear(); } //方式二使用 transferTo() transferFrom() in.transferTo (0, in.size(),out); //out.transferFrom(in,0,in.size()); }}//字节的存放次序 class Endians{ public static void main(String [] args){ ByteBuffer bb = ByteBuffer.wrap(new byte[12]); //12个字节 一个字符占两个字节 bb.asCharBuffer().put("abcdef"); System.out.println(Arrays.toString(bb.array())); bb.rewind(); bb.order(ByteOrder.BIG_ENDIAN); bb.asCharBuffer().put("abcdef"); System.out.println(Arrays.toString(bb.array())); bb.rewind(); bb.order(ByteOrder.LITTLE_ENDIAN); bb.asCharBuffer().put("abcdef"); System.out.println(Arrays.toString(bb.array())); } }
缓冲器的细节
Buffer由数据和可以高效地访问及操纵这些数据的四个索引组成;mark(标记),position(位置),limit(界限),capacity(容量)
阅读全文
0 0
- NIO随笔
- Java NIO 随笔
- Java NIO 随笔(二)
- Java NIO 随笔
- nio
- NIO
- NIO
- nio
- NIO
- NIO
- nio
- Nio
- NIO
- NIO
- NIO
- nio
- NIO
- NIO
- Eagle 分布式rpc调用
- 动态规划-416. Partition Equal Subset Sum
- 解决Consider increasing spark.rpc.message.maxSize
- iOS10.0对用户的隐私权限越来越重视,要想正常访问相册,相机,位置,麦克风,蓝牙,健康等
- Nao笔记1|NAOqi APIs|Core(核心)——ALBehaviorManager (行为管理器)
- NIO随笔
- java学习之补充新知识-文件传输 IO流
- 用pygame写游戏 处理键盘事件
- netty源码分析(六)Reactor模式透彻理解及其在Netty中的应用
- python socket.error: [Errno 48] Address already in use
- Win2k8&&vCenter部署全流程
- HDU——1018Big Number
- 第四周 项目5- 猴子选大王
- 架构师技术要点