网上资料大把,但要写写代码,我这个年纪的人才有一点点记忆了。。

参考URL:

http://blog.csdn.net/wuxianglong/article/details/6612282

package com.cg.io;

import java.io.*;
import java.nio.*;
import java.nio.channels.*;

public class TestIntBuffer {
  static private final byte message[] = {83, 111, 109, 101, 32, 98, 98};
  static private String fileName = "d:\\hehehe\\test.txt";
  public static void main(String[] args) throws Exception {
    FileOutputStream fout = new FileOutputStream(fileName);
    FileChannel fc = fout.getChannel();
    ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
    output("初始化", byteBuffer);
    for (int i=0; i<message.length; ++i) {
      byteBuffer.put(message[i]);
    }
    byteBuffer.flip();
    output("调用flip()", byteBuffer);
    fc.write(byteBuffer);
    output("调用write()", byteBuffer);
    fout.close();
    byteBuffer.clear();
    output("调用clear()", byteBuffer);

    FileInputStream fin = new FileInputStream(fileName);
    fc = fin.getChannel();
    fc.read(byteBuffer);
    output("调用read()", byteBuffer);
    byteBuffer.flip();
    output("调用flip()", byteBuffer);
    while (byteBuffer.remaining() > 0) {
      byte b = byteBuffer.get();
      System.out.print(((char)b));
    }
    output("调用getChannel()", byteBuffer);
    byteBuffer.clear();
    output("调用clear()", byteBuffer);
    fin.close();

    IntBuffer intBuffer = IntBuffer.allocate(8);

    for (int i=0; i < intBuffer.capacity(); ++i) {
      int j = 2 * (i + 1);
      intBuffer.put(j);
    }
    intBuffer.flip();

    while (intBuffer.hasRemaining()) {
      int j = intBuffer.get();
      System.out.print(j + " ");
    }
  }
  public static void output(String step, Buffer buffer){
    System.out.println(step + " : ");
    System.out.println("capacity: " + buffer.capacity() + ", ");
    System.out.println("position: " + buffer.position() + ", ");
    System.out.println("limit: " + buffer.limit() + ", ");
    System.out.println();

  }
}

了解一下JAVA中的NIO模块的更多相关文章

  1. JAVA中的NIO (New IO)

    简介 标准的IO是基于字节流和字符流进行操作的,而JAVA中的NIO是基于Channel和Buffer进行操作的. 传统IO graph TB; 字节流 --> InputStream; 字节流 ...

  2. Java中的NIO基础知识

    上一篇介绍了五种NIO模型,本篇将介绍Java中的NIO类库,为学习netty做好铺垫 Java NIO 由3个核心组成,分别是Channels,Buffers,Selectors.本文主要介绍着三个 ...

  3. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  4. Java中的NIO和IO的对比分析

    总的来说,java中的IO和NIO主要有三点区别: IO NIO 面向流 面向缓冲 阻塞IO 非阻塞IO 无 选择器(Selectors) 1.面向流与面向缓冲 Java NIO和IO之间第一个最大的 ...

  5. Java中的NIO及IO

    1.概述 Java NIO(New IO) 是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API.NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同, ...

  6. JAVA中的NIO(二)

    一.内存文件映射 内存文件映射允许我们创建和修改那些因为太大而不能放入内存中的文件.有了内存文件映射,我们就可以假定整个文件都在内存中,而且可以完全把文件当作数组来访问. package com.dy ...

  7. JAVA中的NIO(一)

    1.IO与NIO IO就是普通的IO,或者说原生的IO.特点:阻塞式.内部无缓冲,面向流. NIO就是NEW IO,比原生的IO要高效.特点:非阻塞.内部有缓存,面向缓冲. 要实现高效的IO操作,尤其 ...

  8. JAVA 中BIO,NIO,AIO的理解

    [转自]http://qindongliang.iteye.com/blog/2018539 ?????????????????????在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解 ...

  9. JAVA 中BIO,NIO,AIO的理解以及 同步 异步 阻塞 非阻塞

    在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解.具体如下: 序号 问题 1 什么是同步? 2 什么是异步? 3 什么是阻塞? 4 什么是非阻塞? 5 什么是同步阻塞? 6 什么是同步 ...

随机推荐

  1. Akka源码分析-Actor发消息(续)

    上一篇博客我们分析道mailbox同时也是一个forkjointask,run方法中,调用了processMailbox处理一定数量的消息,然后最终调用dispatcher的registerForEx ...

  2. DFS之城堡问题

    2019-06-01 17:54:51 坚持!! 题目链接: http://bailian.openjudge.cn/practice/2815 #include <bits/stdc++.h& ...

  3. NS2学习笔记(二)

    Tcl语言 变量和变量赋值 set a "Hello World!" #将字符串赋值给变量a puts "NS2 say $a" #输出字符串的内容,其中$a表 ...

  4. BZOJ 5277 IQ题orz

    思路: 首先我们注意到,对一个序列按分割点分开以后分别冒泡其实就相当于对整个序列进行冒泡.每一个元素都会对复杂度贡献1,除非一个元素两边的分割点都出现了.因此我们可以完全忽略快排的递归过程.只需考虑每 ...

  5. ios cocos2d-x 多点触摸

    需要在 AppController.mm文件中添加一句多点触摸支持: [_view setMultipleTouchEnabled:true];

  6. Java学习笔记_网络+多线程

    支持同时收发的客户端和服务器端 客户端 import javax.swing.*; import java.awt.*; import java.io.*; import java.net.*; im ...

  7. 来自一个用户的体验-Alpha项目测试

    软件梦之队成员:201731062305 周蓉 这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 团队名称 <软件梦之队>(附上团队博客 ...

  8. C#入门经典 Chapter1&2

    Chapter1 1.1 .Net Framework的内容 主要包含一个庞大的代码库,可以在客户端通过OOP来使用这些代码(OOP:Object Oriented Programming面对对象程序 ...

  9. 整合springboot,angular2,可以前后台交互数据

    改造了一下angular2官方文档中的hero项目,让其可以进行后台的交互, https://github.com/DACHUYIN 源码在上面...博客就不写了....

  10. html5——web字体

    基本介绍 1.自定义网页特殊字体,无需考虑用户电脑上是否安装了此特殊字体,从此把特殊字体处理成图片的时代便成为了过去. 2.支持程度比较好,甚至IE低版本浏览器也能支持. 3.web字体的大小鉴定是字 ...