创建直接缓存区完成文件的复制
package com.nio; import java.io.IOException; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.Map; import static java.nio.channels.FileChannel.*; import static java.nio.channels.FileChannel.MapMode.*; /** * 使用直接缓存区完成文件的复制(内存映射文件) 注意:只有bytebuffer支持内存映射文件 * 此种方式,小数据量不建议使用,系统初始化缓存区比较耗费时间,大数据量的时候可以使用 在进行大文件复制的时候,使用这种方式耗时比较短。 */ public class TestChannel2 { public static void main(String[] args) throws IOException { FileChannel inChannel = FileChannel.open(Paths.get( "001.jpg" ), StandardOpenOption.READ); FileChannel outChannel = FileChannel.open(Paths.get( "002.jpg" ), StandardOpenOption.WRITE,StandardOpenOption.READ, StandardOpenOption.CREATE); //内存映射文件 MappedByteBuffer inMappedBuf =inChannel.map(MapMode.READ_ONLY, 0 , inChannel.size()); MappedByteBuffer outMapperBuf = outChannel.map(MapMode.READ_WRITE, 0 , inChannel.size()); //直接对缓存区进行数据的读写操作 byte [] dst = new byte [inMappedBuf.limit()]; inMappedBuf.get(dst); outMapperBuf.put(dst); //关闭通道 inChannel.close(); outChannel.close(); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
2020-02-19 (十三)MySQL语法-子查询