首页 > 其他分享 >FileChannel 数据传输(文件拷贝)

FileChannel 数据传输(文件拷贝)

时间:2022-10-13 20:59:07浏览次数:47  
标签:java FileChannel fromChannel import 数据传输 拷贝 left size

 

 

 

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;

public class FileChannelTest {

    public static void main(String[] args) {
        try (
            FileChannel fromChannel = new FileInputStream("files/text.txt").getChannel();
            FileChannel toChannel = new FileOutputStream("files/textTo.txt").getChannel();
        ) {
            // 效率高,底层会利用操作系统的零拷贝进行优化,上限是 2g 数据
            //fromChannel.transferTo(0, fromChannel.size(), toChannel);
            long size = fromChannel.size();
            // left 表示剩余多少字节
            // transferTo() 方法会返回实际传输的字节数,可能为0
            for (long left = size; left > 0; ) {
                left -= fromChannel.transferTo((size - left), left, toChannel);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

 

标签:java,FileChannel,fromChannel,import,数据传输,拷贝,left,size
From: https://www.cnblogs.com/zhousjcn/p/16789606.html

相关文章

  • C++编写一个程序,初始化一个 double 类型的数组,然后把该数组的内容拷贝至3个其他数组中
    也就是说,给定以下声明,则函数调用如下所示:doublesource[5]={1.1,2.2,3.3,4.4,5.5};doubletarget1[5];doubletarget2[5];doubletarget3[5];copy_arr(target1......
  • 11.NIO-零拷贝
    1.5.3、零拷贝传统IOjava本身并不具备IO读写能力,因此read方法调用后,要从java程序的用户态切换至内核态,去调用操作系统(Kernel)的读能力,将数据读入内核缓冲......
  • 4种Javascript实现深拷贝的方式
    来源| https://www.fly63.com概念介绍深拷贝:在堆内存中重新开辟一个存储空间,完全克隆一个一模一样的对象;浅拷贝:不在堆内存中重新开辟空间,只复制栈内存中的引用地址。本质......
  • LcdTools如何通过PX01把EDP屏的EDID拷贝出来
    PX01点EDP屏在上电过程会自动读取屏EDID,怎么把EDPEDID值拷贝出来呢?在上电时序函数调用SetEdidRdShowEn(ON)指令开启EDID值读取显示功能。如下图  ......
  • 驱动开发:内核R3与R0内存映射拷贝
    在上一篇博文《驱动开发:内核通过PEB得到进程参数》中我们通过使用KeStackAttachProcess附加进程的方式得到了该进程的PEB结构信息,本篇文章同样需要使用进程附加功能,但这次我......
  • 驱动开发:内核R3与R0内存映射拷贝
    在上一篇博文《驱动开发:内核通过PEB得到进程参数》中我们通过使用KeStackAttachProcess附加进程的方式得到了该进程的PEB结构信息,本篇文章同样需要使用进程附加功能,但这次......
  • JavaScript实现深拷贝和浅拷贝
    js的数据类型分为两种一种是基本数据类型:字符串(String)、数字(Number)、布尔(Boolean)、对空(Null)、未定义(Undefined)一种是引用数据类型:对象(Object)、数组(Array)、函数(......
  • 使用hutool poi 拷贝sheet到新excel文件中
    publicclassCopySheetToFileTest{publicstaticvoidmain(String[]args){Filefile=newFile(CopySheetToFileTest.class.getResource("/bx.xlsx"......
  • 使用clone.pl脚本拷贝原库的软件到新的目的库
    环境:OS:Centos6.9DB:11.2.0.4前提条件:1.新库的ORACLE_HOME、ORACLE_BASE环境变量跟原库保持一致2.新库需要创建好oralce账号和相应的组3.新库安装好相应的系统补丁和环......
  • c++和python中赋值,引用,浅拷贝,深拷贝总结
    c++中:引用就是起别名,2个变量共享一个内存,一个变另一个也跟着变=号赋值默认都是浅拷贝操作,另外开辟内存,但是遇到指针,则依然共享内存,所以遇到指针需要深拷贝python中:不可......