使用NIO 写入数据与读取数据的过程类似,同样数据不是直接写入通道,而是写入缓冲区,可以分为下面三个步骤:

1. 从FileInputStream 获取Channel。

2. 创建Buffer。

3. 将数据从Channel 写入到Buffer 中。

import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class FileInputDemo {static public void main( String args[] ) throws Exception {FileInputStream fin = new FileInputStream("E://test.txt");// 获取通道FileChannel fc = fin.getChannel();// 创建缓冲区ByteBuffer buffer = ByteBuffer.allocate(1024);// 读取数据到缓冲区fc.read(buffer);buffer.flip();while (buffer.remaining() > 0) {byte b = buffer.get();System.out.print(((char)b));}fin.close();}
}

下面是一个简单的使用NIO 向文件中写入数据的例子:

import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class FileOutputDemo {static private final byte message[] = { 83, 111, 109, 101, 32,98, 121, 116, 101, 115, 46 };static public void main( String args[] ) throws Exception {FileOutputStream fout = new FileOutputStream( "E://test.txt" );FileChannel fc = fout.getChannel();ByteBuffer buffer = ByteBuffer.allocate( 1024 );for (int i=0; i<message.length; ++i) {buffer.put( message[i] );}buffer.flip();fc.write( buffer );fout.close();}
}

通道Channel-使用NIO 写入数据相关推荐

  1. 通道Channel-使用NIO 读取数据

    在前面我们说过,任何时候读取数据,都不是直接从通道读取,而是从通道读取到缓冲区.所以使用NIO 读取数据可以分为下面三个步骤: 1. 从FileInputStream 获取Channel 2. 创建B ...

  2. 【Netty】NIO 通道 ( Channel ) 组件

    文章目录 I . 通道 ( Channel ) 概念简介 II . 通道 ( Channel ) 常用类 III . 常用的 通道 ( Channel ) 之 套接字通道 ( SocketChanne ...

  3. 【Netty】NIO 选择器 ( Selector ) 通道 ( Channel ) 缓冲区 ( Buffer ) 网络通信案例

    文章目录 I . NIO 通信 服务器端 流程说明 II . NIO 通信 服务器端代码 III . NIO 通信 客户端 流程说明 IV . NIO 通信 客户端代码 V . NIO 通信 示例运行 ...

  4. 【Netty】NIO 简介 ( NIO 模型 | NIO 三大组件 | 选择器 Selector | 通道 Channel | 缓冲区 Buffer | NIO 组件分配 | 缓冲区示例 )

    文章目录 I . NIO 模型 II . NIO 三大组件交互流程 III . NIO 缓冲区 IV . NIO 与 BIO 对比 V . NIO 线程分配 VI . 缓冲区 ( Buffer ) 示 ...

  5. Java NIO学习篇之通道Channel详解

    定义: Channel:通道,运输的介质,可以大致比喻成铁路的铁轨,连接着两个车站,而channel用于打开与IO设备的连接,比如磁盘,套接字等. 通道使用完需要关闭. 与传统IO的Stream比较: ...

  6. java nio channel原理_Java NIO 选择器(Selector)与通道(Channel) 原理 | 学步园

    NIO底层实现poll, epoll(jdk1.5update 9  和jdk1.6  仅限于 linux 2.6以上 ) Java NIO 选择器(Selector) 知识预备 (linux epo ...

  7. 3.通道 Channel

    一.通道(Channel):由java.nio.channels包定义的 .Channel 表示 IO 源与目标打开的连接. Channel 类似于传统的 '流'.只不过 Channel 本身不能直接 ...

  8. java 通道 双向原理_Java-NIO(四):通道(Channel)的原理与获取

    通道(Channel): 由java.nio.channels包定义的,Channel表示IO源与目标打开的连接,Channel类似于传统的"流",只不过Channel本身不能直接 ...

  9. Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O

    I/O基本概念 缓冲区基础 缓冲区是I/O的基础, 进程使用read(), write()将数据读出/写入从缓冲区中; 当缓冲区写满, 内核向磁盘发出指令, 将缓冲区中数据写入磁盘中(这一步不需要CP ...

最新文章

  1. 【课堂笔记系列】二进制
  2. 闲来无事,总结 Xcode常用快捷键
  3. spring的有状态BEAN和无状态BEAN
  4. Java 获取当前时间
  5. 利用solr实现商品的搜索功能
  6. [ZJOI2010] 排列计数(dp + 组合数)
  7. php生成网页按钮,JavaScript实现自动生成网页元素功能(按钮、文本等)_javascript技巧...
  8. 前端学习(417):京东制作页面25中间部分的准备工作
  9. 【Elasticsearch】十九种Elasticsearch字符串搜索方式
  10. Black Salt Audio All Plug-Ins Mac 实用音频压缩插件套装
  11. linux杂项设备+设备节点,linux driver ------ platform模型,通过杂项设备(主设备号是10)注册设备节点...
  12. 手机解开加密excel表格xlsx,忘记excel表格xlsx密码如何找回?
  13. 带你Dart带你Diao之类
  14. SLAM导航机器人零基础实战系列:(三)感知与大脑——5.机器人大脑嵌入式主板性能对比...
  15. 请问开发手机游戏需要什么软件?
  16. Unity 中摄像机跟踪的两种实现
  17. Windows 版本说明,Enterprise、Ultimate、Home、Professional知多少?
  18. 不做不明真相的开发者 之驱动与中断
  19. 医疗器械产品 EMC 测试与整改思路
  20. 【android】音乐播放器之UI设计的点点滴滴

热门文章

  1. 安卓MediaPlayer框架之Binder机制
  2. WebSocket协议探究(序章)
  3. [BZOJ2429][HAOI2006]聪明的猴子(最小生成树)
  4. 针对双系统ubuntu16.04卡死及系统没有声音解决方法
  5. H5 的getImageData造成的大量内存开销
  6. 基于cuda的mmp的bug调试
  7. Unity中Oculus分屏相机和普通相机一键切换
  8. HTML5+CSS3实现的小风车-转动的童年
  9. SpringBoot项目打成jar包后,无法读取resources下的文件
  10. 【Lucene】Lucene的使用和优化