在看nio的一个示例程序的时候看到ByteBuffer的filp方法,没想明白它是做什么用的。jdk的comment写到:
Flips this buffer. The limit is set to the current position and thenthe position is set to zero. If the mark is defined then it isdiscarded.
还是没明白。。。
从他的代码来看非常的简单,就是:
limit = position;
position = 0;
mark = -1;
理解这个三句话首先要明白limit, position和mark这三个变量的含义。position指的是buffer当前指针的位置,所有的读写操作都是从position开始的。limit是指向第一个不应该被读/写的位置。而mark是指buffer被reset时position应该回到的位置。所以从这里就可以看出,flip的做的事情其实是将position指到最头上,将limit设置为当前位置,并且将mark清除。
通常如果在写buffer结束,准备要开始从里面读的时候,就要调用这个flip方法先。
分享到:
相关推荐
Java.NIO资源下载资源下载
找了好久,终于找到了,java刷新同步获取网络资源
Java.nio 与Java.io比较
java NIO.zip
java.io clojure.java.io 的 JK7 java.nio.file.Path 兼容性依赖信息该库托管在 Releases 上。 依赖: [me.moocar/java.io " 0.1.0 " ]用法是 JDK7 中引入的文件路径的抽象。 这个库提供了和 Paths 之间的兼容性。 ...
但 Java 在后期版本中引入了 java.nio.file 库来提高 Java 对文件操作的能力。还增加的流的功能,似乎使得文件变成更好用了。所以本章,我们就来主要介绍 java.nio.file 中常用的类和模块,大致如下: Path 路径:...
java.nio包的学习总结,看看确实有收获
Java.NIO_网络编程_入门讲解,初学者适合的资料
下面小编就为大家分享一篇JDK1.7 之java.nio.file.Files 读取文件仅需一行代码实现,具有很好的参考价值,希望对大家有所帮助
o Clojure对java.nio的支持。 将clojure.java.io的输入流,输出流和复制功能扩展到java.nio类。 定义新的强制功能缓冲区,字节缓冲区,字符缓冲区,双缓冲区,浮点缓冲区,整数缓冲区,长缓冲区,短缓冲区,通道,可...
java 1.4中推出的java.nio(新输入/输出)软件包允许像在其他低级语言——如C语言——中一样进行输入/输出。许多开发者认为这些新功能只能进行非阻塞操作;但是,这些新功能提供许多其他新鲜有趣的特性,它们包括:...
重新写的Java.nio的socket异步通讯,包含客户端及服务端完整版, 注:解析信息CLASS及进制转换CLASS需要自己去写,项目直接导入,需要自己写一些解析及转换类,这样你才能读懂SOCKET的异步,否则光拿代码没用 ...
java NIO详细教程,包括使用背景,实现原理,代码实现
Apress.Pro.Java.7.NIO.2.2011
本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取... fbb.flip(); return fbb.limit(); } } 把 fbb.position() 改成 fbb.limit()
java nio 编程一个实例子.服务端程序
NULL 博文链接:https://shihuan830619.iteye.com/blog/1159544
Java的IO操作集中在java.io这个包中,是基于流的同步(blocking)API。对于大多数应用来说,这样的API使用很方便,然而,一些对性能要求较高的应用,尤其是服务端应用,往往需要一个更为有效的方式来处理IO。从JDK ...