java的FileChannel使用方法。_jianghuihong2012的博客-程序员宅基地

package com.test.nio;

import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class TestFile {

	/**
	 * @param args
	 * @throws FileNotFoundException 
	 */
	public static void main(String[] args) throws Exception {

		RandomAccessFile aFile=new RandomAccessFile("H:/test.txt","rw");
		FileChannel inChannel=aFile.getChannel();
		
		/*分配buffer	*/
		ByteBuffer buf=ByteBuffer.allocate(2);
		/*读入到buffer*/
		int bytesRead=inChannel.read(buf);
		while(bytesRead!=-1)
		{
			/*设置读*/
			buf.flip();
			/*开始读取*/
			while(buf.hasRemaining())
			{
				System.out.print((char)buf.get());
			}
			buf.clear();
			bytesRead=inChannel.read(buf);
		}
		
		aFile.close();
	}		

}


FileChannel我们可以理解为一个file的流,然后我们利用ByteBuffer绑定到这个文件流中,最后把文件流全部读取出来。

输出结果



ByteBuffer buf=ByteBuffer.allocate(2);这句话是分配一个buffer,大小为两个字节。

int bytesRead=inChannel.read(buf);这句话是从文件流中读取一个buf内容,返回读取的大小,如果是读取到文件尾部的时候,返回的是-1。

/*设置读*/
buf.flip();
/*开始读取*/
while(buf.hasRemaining())
{
System.out.print((char)buf.get());
}
buf.clear();


这段话是设置buf为读模式,然后循环输出buf里面的内容,最后清空整个buf。

bytesRead=inChannel.read(buf);这句话继续读取文件流buf大小的内容。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/jianghuihong2012/article/details/39505159

智能推荐

[BZOJ4872]-[Shoi2017]分手是祝愿-期望DP+画柿子_b君发现这个游戏很难,于是想到了这样的一个策略,每次等概率随机操作一个开关,直到-程序员宅基地

说在前面啊啊啊啊啊啊= = 模拟考试考了这套题,考场上推导了一个多小时终于搞出来了,然而没注意到模数是质数,以为求不出逆元…n=k的情况me又没有乘上阶乘,最后只拿到了5分 心中有100…0000万句mmp= =题目BZOJ4872传送门题面B 君在玩一个游戏,这个游戏由 NN 个灯和 NN 个开关组成,给定这 NN 个灯的初始状态,下标为从 11 到 NN 的正整数。每个灯有两个状态亮和灭,我_b君发现这个游戏很难,于是想到了这样的一个策略,每次等概率随机操作一个开关,直到

Python最美可视化库_prepare_data()-程序员宅基地

丑话先说前头今天,来给大家介绍 Python 中一款炒鸡好用的可视化库——Pyecharts。那么在这里注意奥~这个库实际上是对接的前端框架——echarts。款式没得挑剔,不过在安装这块有点小陷阱,也就是针对于版本这块分为 v0.5.X 和 v1 ,而这两个版本之间的使用又是不兼容的。所以得先说好,我们本篇文章所有的代码所依赖的都是v1的版本。如下图:让我们开始叭在这里,我给大家介绍几种比较常用的基础图绘制方法,那其实代码看不懂也木的一点关系。因为,画图嘛,只要替换数据即可。其次,我是非常建议大家_prepare_data()

ASP.NET面试题(一)-程序员宅基地

SP.NET面试题(转 原文地址http://blog.sina.com.cn/s/blog_524c848901009e7b.html~type=v5_one&label=rela_nextarticle作者李洋的博客 http://blog.sina.com.cn/liiyang)1. 简述 private、 protected、 public、 interna...

[com.alibaba.nacos.client.config.security.updater] ERROR c.a.n.c.s.SecurityProxy [SecurityProxy.java-程序员宅基地

[com.alibaba.nacos.client.config.security.updater] ERROR c.a.n.c.s.SecurityProxy [SecurityProxy.java:154] - [SecurityProxy] login http request failed url: http://127.0.0.1:8848/nacos/v1/auth/users/login, params: {username=}, bodyMap: {password=}, errorMsg:

Shell学习笔记(三)——获取文件夹里所有文件的文件名_shell获取目录下所有文件名_luckyxiev5的博客-程序员宅基地

Windows平台上获取某文件下所有图片的名字,不要文件名后缀,将文件名存入文本文件中。example1.bat运行后生成timestamp.txt。example1.bat内容如下。_shell获取目录下所有文件名

Installed Pop Corn time on Xiaomi-程序员宅基地

Installed the Pop Corn time on my computer, found you can watch high quality latest movie online, the resolution is 1080p, tried to installed it on Xiaomi, but it cannot be connected to my computer, f

随便推点

virtualbox 虚拟ubuntu如何全屏显示-程序员宅基地

在虚拟机virtualbox4.04上装好ubuntu10.10之后,启动ubuntu系统;这时在“控制”菜单下面看到“switch to seamless mode”选项是灰色的点击上面的“设备”菜单,选择最后一项“安装增强功能(I)...”;然后再重启ubuntu系统;你就会在桌面上看到一个VBOXADDITIONS_4.0.4_70112的东西;进入终端:1.查看medi

Debian安装oh-my-zsh-程序员宅基地

# 安装zshapt install zsh# 切换zsh,重启终端生效chsh -s /bin/zsh#查看当前使用的shellecho $SHELL# 安装oh-my-zsh(使用gitee源)sh -c "$(curl -fsSL https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh)"

调用静态库生成动态库并使用_能否把静态库里某些函数 转为动态库-程序员宅基地

最近研究了一下动态库和静态库调用的问题,本篇文字是在生成动态库的时候调用静态库,并使用动态库编译成可执行程序。不足之处还望多多指教。1、首先写了一个简单的接口编译成静态库(.h文件和.cpp文件如下)//hello.h#include <stdio.h>bool show (int date);//hello.cpp#include <stdio.h&gt..._能否把静态库里某些函数 转为动态库

python语言公开发行版本诞生于哪年-python-程序员宅基地

[编辑]什么是PythonPython,是一种面向对象、解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循 GPL(GNU General Public License)协议。Python语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联..._1991年python第一个公开版发行。

CE_tutorial_game_tutorialgame-程序员宅基地

CE自带测试小游戏Cheat Engine Tutorial Games用于测试经过Cheat Engine Tutorial的学习的掌握情况Step 1: 由游戏介绍我们可知,游戏目标是摧毁目标。规则是弹夹容量为5发,也就是说每发射5发子弹后,需要重新装填后才能继续发射,重新装填之时目标血量将会回满。 经过观察可以知道,每当发射4..._tutorialgame

python库安装的大小_python 常库介绍及安装方法-程序员宅基地

adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包MySQLdb:连接MySQL数据库的py2ex...