java的FileChannel使用方法。

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大小的内容。

时间: 2024-08-05 11:00:17

java的FileChannel使用方法。的相关文章

Java NIO FileChannel

Java NIO中的FileChannel是一个连接到文件的通道.可以通过文件通道读写文件. FileChannel无法设置为非阻塞模式,它总是运行在阻塞模式下. 打开FileChannel 在使用FileChannel之前,必须先打开它.但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream.OutputStream或RandomAccessFile来获取一个FileChannel实例.下面是通过RandomAccessFile打开FileChannel的示例

java获取文件大小的方法

目前Java获取文件大小的方法有两种: 1.通过file的length()方法获取: 2.通过流式方法获取: 通过流式方法又有两种,分别是旧的java.io.*中FileInputStream的available()方法和新的java..nio.*中的FileChannel 下面依次介绍这几种方法: 首先选择一个文件并查看这个文件在windows中显示的大小,为了测试准确性,我这里选取了一个大文件(超过2GB) 查看这个文件在windows中显示的大小: 使用在线转换工具将其转换成字节: 可以看

学java教程之普通方法重载

学编程吧学java教程之普通方法重载发布了,欢迎通过xuebiancheng8.com来访问 先来看什么是普通方法重载呢,先来看一个例子 public class Person{ String username; int age; public void hello(){ System.out.println("Hello"); } public void hello(String username){ System.out.println("你好"+usernam

浅谈Java中的hashCode方法

哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率.在Java的Object类中有一个方法: public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现. 为何Object类需要这样一个方法?它有什么作用呢?今天我们就来具体探讨一下hashCode方法. 一.hashCode方法的作用 对于包含容器类型的程序设计语言来说,基本上都会涉及到has

java 里面的 native 方法

第一篇: 今天花了两个小时把一份关于什么是Native Method的英文文章好好了读了一遍,以下是我依据原文的理解. 一. 什么是Native Method   简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C.这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数.   

java获得平台相关的行分隔符和java路径分隔符的方法

System.getProperties(): 行分隔符在windows 下是 \r\n,在Linux下面是 \n, 在Mac下是 \r路径分隔符在windows下是 \ ,在LInux下是 / System.getProperty("file.separator") java.version Java 运行时环境版本 java.vendor Java 运行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装目录 java.vm.

java.lang.Class.getDeclaredMethod()方法详解

java.lang.Class.getDeclaredMethod()方法用法 注:方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法. 描述 java.lang.Class.getDeclaredMethod()方法返回一个Method对象,它反映此Class对象所表示的类或接口的指定已声明方法. name 参数是一个字符串,指定所需的方法的简单名称, parameterTypes 参数是一个数组的Class对象识别方法的形参类型,在声明的顺序 声明 [jav

Java中的main()方法详解

在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这个例子说明Java类中main()方法的奥秘,程序的代码如下: 1 /** 2 * Java中的main()方法

java中构造方法和方法全面解析

java中构造方法和方法全面解析 我相信大多说人都对构造方法.方法不陌生,而且很了解,但我也相信有很多像我这样的没有一个很好很清晰很全面的认识,今天就把它整理如下,希望能给大家带来点方便与帮助,也希望大家多多讨论.          构造方法和方法的区别: 构造方法要与类名相同,无返回类型,在类初始化的时候调用.      方法最好与类名不同,对象调用,静态方法可用类名.方法(). 构造器和方法在下面三个方面区别:修饰符,返回值,命名. 1.和方法一样,构造器可以有任何访问的修饰: public