a.txt

孔雀向西飞,今朝更好看。
孔雀向西飞,今朝更好看。
孔雀向西飞,今朝更好看。
孔雀向西飞,今朝更好看。

示例一、

 package com.test;

 import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel; public class Main {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("E://a.txt");
FileOutputStream fos = new FileOutputStream("E://b.txt");
FileChannel in = fis.getChannel();
FileChannel out = fos.getChannel();
ByteBuffer buf = ByteBuffer.allocateDirect(20);
while (true) {
// 从通道in中读数据到buf,然后从buf中读出来写入out通道
int eof = in.read(buf);
if (eof == -1)
break;
buf.flip();
int c = out.write(buf);
System.out.println("c=" + c);
buf.clear();
}
fis.close();
fos.close(); }
} 执行结果
b.txt 孔雀向西飞,今朝更好看。
孔雀向西飞,今朝更好看。
孔雀向西飞,今朝更好看。
孔雀向西飞,今朝更好看。 示例二、
 package com.test;

 import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel; public class Main {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("E://a.txt");
FileOutputStream fos = new FileOutputStream("E://b.txt");
FileOutputStream fos2 = new FileOutputStream("E://c.txt");
FileChannel in = fis.getChannel();
FileChannel out = fos.getChannel();
FileChannel out2 = fos2.getChannel();
ByteBuffer buf = ByteBuffer.allocateDirect(20);
ByteBuffer buf2 = ByteBuffer.allocateDirect(20);
while (true) {
// 从通道in中读数据到buf,然后从buf中读出来写入out通道
int eof = in.read(buf);
if (eof == -1)
break;
buf.flip();
int c = out.write(buf);
System.out.println("c=" + c);
buf.clear();
// 从通道in中读数据到buf,然后从buf中读出来写入out2通道
int eof2 = in.read(buf2);
if (eof2 == -1)
break;
buf2.flip();
int c2 = out2.write(buf2);
System.out.println("c2=" + c2);
buf2.clear();
}
fis.close();
fos.close();
fos2.close();
}
}

执行结果

b.txt

孔雀向西飞,今朝更好朝更好看。
孔雀向西雀向西飞,今朝更好看

c.txt

看。
孔雀向西飞,今飞,今朝更好看。
孔。


Buffer、Channel示例的更多相关文章

  1. Netty那点事: 概述, Netty中的buffer, Channel与Pipeline

    Netty那点事(一)概述 Netty和Mina是Java世界非常知名的通讯框架.它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户ne ...

  2. JAVA基础知识之NIO——Buffer.Channel,Charset,Channel文件锁

    NIO机制 NIO即NEW IO的意思,是JDK1.4提供的针对旧IO体系进行改进之后的IO,新增了许多新类,放在java.nio包下,并对java.io下许多类进行了修改,以便使用与nio. 在ja ...

  3. NIO的Buffer&Channel&Selector

    java的NIO和AIO Buffer position.limit.capacity 初始化 Buffer 填充 Buffer 提取 Buffer 中的值 mark() & reset() ...

  4. NIO之Buffer操作示例

    1. buffer常规操作 略 2. 只读buffer /** * 只读buffer */ public class BufferTest01 { public static void main(St ...

  5. NIO Channel和Buffer

    Java NIO 由以下几个核心部分组成: Buffer Channel Selector 传统的IO操作面向数据流,意味着每次从流中读一个或多个字节,直至完成,数据没有被缓存在任何地方.NIO操作面 ...

  6. 《精通并发与Netty》学习笔记(10 - 详解NIO (一) Channel、Buffer )

    一.Java NIO 概述 Java NIO 由以下几个核心部分组成:ChannelsBuffersSelectors虽然Java NIO 中除此之外还有很多类和组件,但在我看来,Channel,Bu ...

  7. go 技巧: 实现一个无限 buffer 的 channel

    前言 总所周知,go 里面只有两种 channel,一种是 unbuffered channel, 其声明方式为 ch := make(chan interface{}) 另一种是 buffered ...

  8. 转:Java NIO系列教程(二) Channel

    Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. 通道可以异步地读写. 通道中的数据总是要先读到一个Buffer,或者总是要从一个Bu ...

  9. java Channel

    Channel Channel与流 基本上,所有的 IO 在NIO 中都从一个Channel 开始.Channel 有点象流.数据可以从Channel读到Buffer中,也可以从Buffer 写到Ch ...

随机推荐

  1. Ubuntu 和 Redhat / Fedora 服务管理命令对比表(附Fedora16新的服务管理工具systemctl )

    以 apache/httpd 服务作为例子 任务 Red Hat / Fedora Ubuntu Ubuntu (with sysv-rc-conf or sysvconfig) 立即启动/停止某服务 ...

  2. pyqt官方示例

    文件夹 PATH 列表 卷序列号为 00000058 F027:7BEC C:. ├─activeqt │ └─webbrowser │ ├─icons │ └─pycache ├─animation ...

  3. jQuery 查找父元素

    function deletesec1Div5(obj){ $(obj).closest(".sec1-div5").remove();}自己写的一段代码,实现了table中的全选 ...

  4. nginx 支持laravel 5.3配置

    server { listen ; server_name www.baidu.com.cn; root /data/cehuiren/public; #charset koi8-r; #access ...

  5. javascript学习内容--object.style.display="value" value值为“”none“隐藏”或 "block"显示

    <head> var mychar=document.getElementById("con"); function hidden(){ mychar.style.di ...

  6. CentOS 配置防火墙操作实例(启、停、开、闭端口):

    CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service   iptables status< ...

  7. 搜集资料&安装环境

    开始入坑DSP,芯片是TI的TMS320C6678,硬件平台为TI官方的TMS320C6678L开发板. 官方给的资料有很多,各种用户手册.软件支持包,眼花缭乱.先尝试把开发环境搭起来,跑个Hello ...

  8. 【xsy1629】可持久化序列 - 可持久化平衡树

    题意 你现在要用数据结构维护一个长度为n的序列. 这个序列支持三种操作: 1 l r:将序列中的第l项到第r项这一段翻转. 2 l r:查询序列中[l,r]这一段的和. 3 p:回到第p个历史版本. ...

  9. css实现定高的元素在不定高的容器中水平垂直居中(兼容IE8及以上)

    容器设置相对定位 元素设置宽高,并使用绝对定位,上下左右值均为0,margin:auto 如下所示: <!DOCTYPE html> <html> <head lang= ...

  10. ON DUPLICATE KEY UPDATE重复插入时更新

    mysql当插入重复时更新的方法: 第一种方法: 示例一:插入多条记录 假设有一个主键为 client_id 的 clients 表,可以使用下面的语句: INSERT INTO clients (c ...