3.2 两个 Channel 传输数据

简介: 3.2 两个 Channel 传输数据

String FROM = "helloword/data.txt"; String TO = "helloword/to.txt"; long start = System.nanoTime(); try (FileChannel from = new FileInputStream(FROM).getChannel(); FileChannel to = new FileOutputStream(TO).getChannel(); ) { from.transferTo(0, from.size(), to); } catch (IOException e) { e.printStackTrace(); } long end = System.nanoTime(); System.out.println("transferTo 用时:" + (end - start) / 1000_000.0);

超过 2g 大小的文件传输

public class TestFileChannelTransferTo { public static void main(String[] args) { try ( FileChannel from = new FileInputStream("data.txt").getChannel(); FileChannel to = new FileOutputStream("to.txt").getChannel(); ) { // 效率高,底层会利用操作系统的零拷贝进行优化 long size = from.size(); // left 变量代表还剩余多少字节 for (long left = size; left > 0; ) { System.out.println("position:" + (size - left) + " left:" + left); left -= from.transferTo((size - left), left, to); } } catch (IOException e) { e.printStackTrace(); } } }



目录
相关文章
|
安全
Baidu千帆大模型赋能——儿童读物——童话故事21
Baidu千帆大模型赋能——儿童读物——童话故事21
87 0
|
canal 缓存 NoSQL
Redis常见面试题(一):Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;先删除缓存还是先修改数据库,双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
Redis常见面试题(一):Redis使用场景,缓存、分布式锁;缓存穿透、缓存击穿、缓存雪崩;双写一致,Canal,Redis持久化,数据过期策略,数据淘汰策略
|
C语言
三子棋(C语言)
1.代码结果演示 2.三子棋实现 2.1游戏思路 2.2分步实现 2.2.1分别创建头文件game.h、源文件game.c和test.c 2.2.2创建菜单并实现选择是否玩游戏 2.2.3创建棋盘并完成初始化 2.2.4打印棋盘 2.2.5玩家下棋 2.2.6电脑下棋 2.2.7判断输赢 3.完整代码 game.h game.c test.c
155 0
|
JSON JavaScript 前端开发
node.js第三天-----ajax(2)
node.js第三天-----ajax(2)
75 0
|
JavaScript
【更多小知识】【JS】Number(null)输出的结果是0
【更多小知识】【JS】Number(null)输出的结果是0
1579 0
【更多小知识】【JS】Number(null)输出的结果是0
pageable 使用自定义list实现分页
pageable 使用自定义list实现分页
240 0
|
前端开发 JavaScript 程序员
基于H5+css+JavaScript实现全屏覆盖导航栏
基于H5+css+JavaScript实现全屏覆盖导航栏
351 0
基于H5+css+JavaScript实现全屏覆盖导航栏
|
SQL 缓存 Oracle
0322Private strand flush not complete
[20170322]Private strand flush not complete.txt --//探究一下生产系统出现alert大量出现Private strand flush not complete.
1056 0