java8中nio通道(Channel)的基本使用

 时间:2026-02-13 20:23:06

1、利用通道完成文件的复制

@Test

    public void test4() throws Exception{

        FileChannel inChannel = FileChannel.open(Paths.get("1.jpg"),

                StandardOpenOption.READ);

        FileChannel outChannel = FileChannel.open(Paths.get("2.jpg"),

                StandardOpenOption.WRITE,

                StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);

        

        //inChannel.transferTo(0,inChannel.size(),outChannel);

        outChannel.transferFrom(inChannel,0,inChannel.size());

        inChannel.close();

        outChannel.close();

    }

java8中nio通道(Channel)的基本使用

2、使用直接缓冲区完成文件的复制(内存映射文件)

    @Test

    public void test2() throws Exception{

        FileChannel inChannel = FileChannel.open(Paths.get("1.jpg"), StandardOpenOption.READ);

        FileChannel outChannel = FileChannel.open(Paths.get("2.jpg"),StandardOpenOption.WRITE,StandardOpenOption.CREATE_NEW);

        

        //内存映射文件

        MappedByteBuffer inMappedBuff =  inChannel.map(FileChannel.MapMode.READ_ONLY,0,inChannel.size());

        MappedByteBuffer outMappedBuff = outChannel.map(FileChannel.MapMode.READ_WRITE,0,inChannel.size());

        

        //直接对缓冲区进行数据的读写操作

        byte[] dst = new byte[inMappedBuff.limit()];

        

        inMappedBuff.get(dst);

        outMappedBuff.put(dst);

        

    }

java8中nio通道(Channel)的基本使用

3、通道之间的数据传输

 @Test

    public void test4() throws Exception{

        FileChannel inChannel = FileChannel.open(Paths.get("1.jpg"),

                StandardOpenOption.READ);

        FileChannel outChannel = FileChannel.open(Paths.get("2.jpg"),

                StandardOpenOption.WRITE,

                StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);

        

        inChannel.transferTo(0,inChannel.size(),outChannel);

    }

java8中nio通道(Channel)的基本使用

4、通道之间的数据传输(直接缓冲区)

 @Test

    public void test4() throws Exception{

        FileChannel inChannel = FileChannel.open(Paths.get("1.jpg"),

                StandardOpenOption.READ);

        FileChannel outChannel = FileChannel.open(Paths.get("2.jpg"),

                StandardOpenOption.WRITE,

                StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);

        

        outChannel.transferFrom(inChannel,0,inChannel.size());

    }

java8中nio通道(Channel)的基本使用

5、关闭输入通道连接

 @Test

    public void test4() throws Exception{

        FileChannel inChannel = FileChannel.open(Paths.get("1.jpg"),

                StandardOpenOption.READ);

        FileChannel outChannel = FileChannel.open(Paths.get("2.jpg"),

                StandardOpenOption.WRITE,

                StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);

        

        outChannel.transferFrom(inChannel,0,inChannel.size());

        inChannel.close();

    }

java8中nio通道(Channel)的基本使用

6、关闭输出通道连接

@Test

    public void test4() throws Exception{

        FileChannel inChannel = FileChannel.open(Paths.get("1.jpg"),

                StandardOpenOption.READ);

        FileChannel outChannel = FileChannel.open(Paths.get("2.jpg"),

                StandardOpenOption.WRITE,

                StandardOpenOption.READ,StandardOpenOption.CREATE_NEW);

        

        outChannel.transferFrom(inChannel,0,inChannel.size());

        inChannel.close();

        outChannel.close();

    }

java8中nio通道(Channel)的基本使用

  • 出国去冰岛周边旅游攻略
  • 怎么样精准合理的填报高考志愿
  • 买求婚戒指的价格
  • 《搜神录-魅影灵狐》玩法
  • 导致不孕的原因有哪些
  • 热门搜索
    如何修改电脑开机密码 zuk手机怎么样 如何提取公积金 excel打印区域怎么设置 鹿晗是哪里人 吉利金刚怎么样 罗马数字怎么输入 标志308怎么样 如何买基金新手入门 一路向西哪里可以看