
Java的NIO
文章平均质量分 80
wjy320
这个作者很懒,什么都没留下…
展开
-
旧的I/O类库中有三个类被赋予了产生FileChannel的能力
旧的I/O类库中有三个类被修改了,用以产生FileChannel。来看看他们的例子: package com.wjy.nio; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; ...原创 2014-01-09 11:04:39 · 95 阅读 · 0 评论 -
通过read读入到ByteBuffer中后转换成字符的三种做法
package com.wjy.nio; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import ja...原创 2014-01-09 11:30:21 · 740 阅读 · 0 评论 -
内存映射文件
以前一直使用FileInputStream来读取文件,使用FileOurputStream来写文件。今天恍然大悟,RandomAccessFile类可以在初始化的时候设定是用来“读”,还是“写”,还是“又读又写”。这样一来就很方便了,打破了以前只能通过FileInputStream来读取,FileOurputStream来写入的限制。 例如:RandomAccessFil...原创 2014-01-09 14:50:07 · 89 阅读 · 0 评论 -
对映射文件的部分加锁
文件映射通常应用于极大的文件,我们可能需要对这种巨大的文件进行部分加锁,以便其他进程可以修改文件中未被加锁的部分。例如:数据库就是这样,因此多个用户可以同时访问它。 看个例子:连个线程分别对文件的不同部分加锁: package com.wjy.nio; import java.io.FileNotFoundException; import java.io.IOExceptio...原创 2014-01-09 15:30:28 · 101 阅读 · 0 评论 -
(转)ByteBuffer
缓冲区分配和包装 在能够读和写之前,必须有一个缓冲区,用静态方法 allocate() 来分配缓冲区: ByteBuffer buffer = ByteBuffer.allocate(1024); allocate() 方法分配一个具有指定大小的底层数组,并将它包装到一个缓冲区对象中 — 在本例中是一个 ByteBuffer。 还可以将一个现有的数组转换为缓冲区: byte array[] =...原创 2014-01-09 15:48:10 · 106 阅读 · 0 评论 -
采用NIO实现一个Socket服务器
以前用Socket写服务端,常用的做法是维护一个线程池,每当有客户端连入则交给一个特定的线程处理,处理完之后返回。解除了NIO之后,发现可以不用这样了。使用NIO的话,不需要像以前那样维护线程池了,一个线程就可以搞定多个客户端的请求。 于是自己就动手写了一个示例程序。 先描述一下程序:服务端采用ServerSocketChannel,使用Selector...原创 2014-01-10 11:11:38 · 138 阅读 · 0 评论 -
基于事件的NIO多线程服务器的问题
最近看了很好的一篇博客:http://www.ibm.com/developerworks/cn/java/l-niosvr/ 于是我按照作者给的源码做实验(源码以上传到附件中NIOServer.jar),我模拟发送1000次消息,服务器做出一千次响应。 public static void main(String args[]) { ...原创 2014-05-22 11:46:52 · 120 阅读 · 0 评论