Nio学习之通道的获取

旧的I/O类库中有三个类被修改了,可以产生FileChannel.

他们分别是可读的FileInputStream,用于生成通道;可写的FileOutputStream,用于生成通道,即可读又可写的RandomAccessFile,用于生成通道。

并且都是字节操纵流。而字符流则不能用于产生通道;

package part18;


import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

/**
 * Created by xueqin on 17/5/30.
 */
public class GetChannel {
    private static final int BSIZE=1024;

    public static void main(String[] args) throws Exception  {
        FileChannel fc = new FileOutputStream("data.txt").getChannel();
        fc.write(ByteBuffer.wrap("this is a test from FileOutputStream \n".getBytes()));
        fc.close();
        fc = new RandomAccessFile("data.txt", "rw").getChannel();
        fc.position(fc.size());
        fc.write(ByteBuffer.wrap(" this is a test from RandomAccessFile".getBytes()));
        fc.close();
        fc = new FileInputStream("data.txt").getChannel();
        ByteBuffer buff = ByteBuffer.allocate(BSIZE);
        fc.read(buff);
        buff.flip();
        while (buff.hasRemaining()) {
            System.out.print((char) buff.get());
        }
    }
}
运行输出结果为:
this is a test from FileOutputStream 
 this is a test from RandomAccessFile
从中可以得出FileOutputStream和FileInputStream,RandomAccessFile可以通过getChannel()方法获取对应的通道,然后通过ByteBuffer缓存
块可以对其操作完成大量流的传输功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值