了解一下JAVA中的NIO模块

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

参考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();

  }
}

时间: 2025-01-21 04:20:29

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

java中static初始化模块的使用

问题描述 java中static初始化模块的使用 我在编写中反复调用一个类中的方法,该类中有一个静态初始化模块static{},没有主方法,那么这个类的初始化模块会不会反复初始化? 怎么让它之初始化一次? 是在作c/s模型中出现的,客户端发送请求,要求修改服务器端的static模块,修改成功后,再次访问static模块又初始化了. 解决方案 java中static的使用java-static的使用java static final 初始化 解决方案二: 它本来就只初始化一次 解决方案三: 静态类

在Java中使用NIO进行网络编程

在JDK中,有一个非常有意思的库:NIO(New I/O).这个库中有3个重要的类,分别 是java.nio.channels中Selector和Channel,以及java.nio中的Buffer. 本篇文章我们首先了解一下为什么需要NIO来进行网络编程,然后看看一步一步来讲解 如何在网络编程中使用NIO. 为什么需要NIO 使用Java编写过Socket程序的同学一定都知道Socket和SocketServer.当调用某个调 用的时候,调用的地方就会阻塞,等待响应.这种方式对于小规模的程序非

Java中的基础构建模块(第五章)

Java中的基础构建模块 Java平台类库包含了丰富的并发基础构建模块,例如线程安全的容器类以及各种用于协调多个相互协作的线程控制流的同步工具类. 1.同步容器类 同步容器类都是线程安全的,但在某些情况下可能需要额外的客户端加锁来保护复合操作.常见的复合操作包括:迭代.跳转(在容器内元素之间).条件运算(例如"若没有则添加"). 隐式迭代:某些情况下迭代操作会隐藏起来.如下代码中println调用Set的toString方法,然后对Set中的对象进行迭代调用toString方法: pu

接口继承-关于java中Dao模块接口问题,请教一下原理

问题描述 关于java中Dao模块接口问题,请教一下原理 BaseDao.java public interface BaseDao {} BaseDaoImpl.java public abstract class BaseDaoImpl implements BaseDao {} UserService.java public interface UserService extends BaseDao{} UserServiceImpl.java public class UserServi

Java中异常机制的深入研究

由于本文旨在探讨Java"异常机制"的深层原理,因此关于"异常"的使用方法都不做详细说明.首先看一段非常熟悉的用于打开一个文件的C程序段: FILE *fp;fp=fopen(filename,"rw");if(fp==NULL){ printf("cannot open file\n"); exit(0);} 在这段程序中,if条件语句中的一段用来处理没有找到指定文件,或者其它原因无法正确打开指定文件.可是如果遇到一个责任心

使用JAVA中的动态代理实现数据库连接池

动态|数据|数据库|数据库连接 数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的连接数据库对服务性能来讲是一个瓶颈,使用缓冲池技术可以来消除这个瓶颈.我们可以在互联网上找到很多关于数据库连接池的源程序,但是都发现这样一个共同的问题:这些连接池的实现方法都不同程度地增加了与使用者之间的耦合度.很多的连接池都要求用户通过其规定的方法获取数据库的连接,这一点我们可以理解,毕竟目前所有的应用服务器取数据库连接的方式都是这种方式实现的.但是另外一个共同的问题是,它们同时不允许使用者显式的调用Co

ASP.NET中的HTTP模块和处理程序

asp.net|程序 介绍 在Internet时代的开端,客户端的需求非常有限:.htm文件就可以满足他们的需求.但是,随着时间的流逝,客户端需求的扩充超越了.htm文件或静态文件所包含的功能. 开发者需要扩充或扩展Web服务器的功能.Web服务器厂商设计了不同的解决方案,但是都遵循同一个主题"向Web服务器插入某些组件".所有的Web服务器补充技术都允许开发者建立并插入组件以增强Web服务器的功能.微软公司提出了ISAPI(Internet服务器API),网景公司提出了NSAPI(网

JAVA中如何执行DOS命令

  下面是一种比较典型的程序模式: ... Process process = Runtime.getRuntime().exec(".p.exe"); process.waitfor( ); ... 在上面的程序中,第一行的".p.exe"是要执行的程序 名,Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指 定的可执行程序,并返回与该子进程对应的Process对象实例.通过

浅谈Java中的异常

  作为一个面向对象编程的程序员对于 下面的一句一定非常熟悉: 复制代码 try { // 代码块 } catch(Exception e) { // 异常处理 } finally { // 清理工作 } 复制代码 就是面向对象中最最常见的异常处理程序,而且甚至我们会莫名其妙的被编译器要求加上这个模块,甚至我们自己也不知道捕捉到异常该怎么处理... 为什么要有异常 其实这个问题不用多说,程序员都知道,简单总结为一句话:就是为了增强程序健壮性呗,比如下面的代码: Class Denominator