通道Channel-使用NIO 写入数据
使用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 写入数据相关推荐
- 通道Channel-使用NIO 读取数据
在前面我们说过,任何时候读取数据,都不是直接从通道读取,而是从通道读取到缓冲区.所以使用NIO 读取数据可以分为下面三个步骤: 1. 从FileInputStream 获取Channel 2. 创建B ...
- 【Netty】NIO 通道 ( Channel ) 组件
文章目录 I . 通道 ( Channel ) 概念简介 II . 通道 ( Channel ) 常用类 III . 常用的 通道 ( Channel ) 之 套接字通道 ( SocketChanne ...
- 【Netty】NIO 选择器 ( Selector ) 通道 ( Channel ) 缓冲区 ( Buffer ) 网络通信案例
文章目录 I . NIO 通信 服务器端 流程说明 II . NIO 通信 服务器端代码 III . NIO 通信 客户端 流程说明 IV . NIO 通信 客户端代码 V . NIO 通信 示例运行 ...
- 【Netty】NIO 简介 ( NIO 模型 | NIO 三大组件 | 选择器 Selector | 通道 Channel | 缓冲区 Buffer | NIO 组件分配 | 缓冲区示例 )
文章目录 I . NIO 模型 II . NIO 三大组件交互流程 III . NIO 缓冲区 IV . NIO 与 BIO 对比 V . NIO 线程分配 VI . 缓冲区 ( Buffer ) 示 ...
- Java NIO学习篇之通道Channel详解
定义: Channel:通道,运输的介质,可以大致比喻成铁路的铁轨,连接着两个车站,而channel用于打开与IO设备的连接,比如磁盘,套接字等. 通道使用完需要关闭. 与传统IO的Stream比较: ...
- java nio channel原理_Java NIO 选择器(Selector)与通道(Channel) 原理 | 学步园
NIO底层实现poll, epoll(jdk1.5update 9 和jdk1.6 仅限于 linux 2.6以上 ) Java NIO 选择器(Selector) 知识预备 (linux epo ...
- 3.通道 Channel
一.通道(Channel):由java.nio.channels包定义的 .Channel 表示 IO 源与目标打开的连接. Channel 类似于传统的 '流'.只不过 Channel 本身不能直接 ...
- java 通道 双向原理_Java-NIO(四):通道(Channel)的原理与获取
通道(Channel): 由java.nio.channels包定义的,Channel表示IO源与目标打开的连接,Channel类似于传统的"流",只不过Channel本身不能直接 ...
- Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O
I/O基本概念 缓冲区基础 缓冲区是I/O的基础, 进程使用read(), write()将数据读出/写入从缓冲区中; 当缓冲区写满, 内核向磁盘发出指令, 将缓冲区中数据写入磁盘中(这一步不需要CP ...
最新文章
- 【课堂笔记系列】二进制
- 闲来无事,总结 Xcode常用快捷键
- spring的有状态BEAN和无状态BEAN
- Java 获取当前时间
- 利用solr实现商品的搜索功能
- [ZJOI2010] 排列计数(dp + 组合数)
- php生成网页按钮,JavaScript实现自动生成网页元素功能(按钮、文本等)_javascript技巧...
- 前端学习(417):京东制作页面25中间部分的准备工作
- 【Elasticsearch】十九种Elasticsearch字符串搜索方式
- Black Salt Audio All Plug-Ins Mac 实用音频压缩插件套装
- linux杂项设备+设备节点,linux driver ------ platform模型,通过杂项设备(主设备号是10)注册设备节点...
- 手机解开加密excel表格xlsx,忘记excel表格xlsx密码如何找回?
- 带你Dart带你Diao之类
- SLAM导航机器人零基础实战系列:(三)感知与大脑——5.机器人大脑嵌入式主板性能对比...
- 请问开发手机游戏需要什么软件?
- Unity 中摄像机跟踪的两种实现
- Windows 版本说明,Enterprise、Ultimate、Home、Professional知多少?
- 不做不明真相的开发者 之驱动与中断
- 医疗器械产品 EMC 测试与整改思路
- 【android】音乐播放器之UI设计的点点滴滴
热门文章
- 安卓MediaPlayer框架之Binder机制
- WebSocket协议探究(序章)
- [BZOJ2429][HAOI2006]聪明的猴子(最小生成树)
- 针对双系统ubuntu16.04卡死及系统没有声音解决方法
- H5 的getImageData造成的大量内存开销
- 基于cuda的mmp的bug调试
- Unity中Oculus分屏相机和普通相机一键切换
- HTML5+CSS3实现的小风车-转动的童年
- SpringBoot项目打成jar包后,无法读取resources下的文件
- 【Lucene】Lucene的使用和优化