import static java.nio.file.StandardOpenOption.*;

import java.nio.file.*;

import java.nio.channels.*;

import java.io.IOException;

import java.util.EnumSet;

public class FileBackup {

/**

* @param args

*/

public static void main(String[] args) {

// TODO 自动生成方法存根

Path file = Paths.get(System.getProperty("user.home")).resolve(

"Beginning Java Stuff").resolve("Sayings.txt");

if (!Files.exists(file)) {

System.err.println(file + " is not exist.");

System.exit(1);

}

file.toAbsolutePath();//将路径转化为绝对路径,如果已经是绝对路径则原样返回

Path tofile= createBackupFilePath(file);//创建复制文件路径

try{

FileChannel inCh=(FileChannel)(Files.newByteChannel(file));//filechannel具有更高的功能

WritableByteChannel outCh=Files.newByteChannel(tofile,EnumSet.of(WRITE,CREATE));//新建写入文件通道

int byteWritten=0;

long byteCount=inCh.size();

while(byteWritten

byteWritten+=inCh.transferTo(byteWritten,byteCount-byteWritten,outCh);

//Transfers bytes from this channel's file to the given writable byte channel.

//long transferTo(long position,long count,WritableByteChannel target) position是开始位置,count是要读取的字节数,target是目标通道

//返回的是实际转化的字节数

}

System.out.printf("File copy complete. %d bytes copied to %s%n", byteCount, tofile);

}catch(IOException e){

e.printStackTrace();

}

}

public static Path createBackupFilePath(Path file){

Path parent=file.getParent();

String name=file.getFileName().toString();//getFilename返回文件名(路径类型),也就是路径中距离根目录最远的

int period=name.indexOf('.');

if(period==-1){

period=name.length();

}

String nameAdd="_backup";

Path backup=parent.resolve(name.substring(0,period)+nameAdd+name.substring(period));//修改路径,建立复制文件路径

while(Files.exists(backup)){//检测新建的路径是否存在,如果存在则继续在文件名后面加_backup

name=backup.getFileName().toString();

backup=parent.resolve(name.substring(0,period)+nameAdd+name.substring(period));

period+=nameAdd.length();

}

return backup;

}

}

transferto 文件不存在_通过通道复制文件transferTo相关推荐

  1. python中shutil.copyfile的用法_用Python复制文件的9个方法

    Python 中有许多"开盖即食"的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作.在这篇文章中,你将会看到一些用 Python 实现文件复制的 ...

  2. python复制文件的方法是_Python中复制文件的9种方法

    Python 中有许多"开盖即食"的模块(比如 os,subprocess 和 shutil)以支持文件 I/O 操作.在这篇文章中,你将会看到一些用 Python 实现文件复制的 ...

  3. python os复制文件_用Python复制文件的九种方法

    以下是演示"如何在Python中复制文件"的九种方法. shutil copyfile()方法 shutil copy()方法 shutil copyfileobj()方法 shu ...

  4. transferto方法的应用_使用NIO中的transferTo方法传输数据精度丢失的问题

    最近在学习NIO 时遇到一个问题,使用transferTo()方法和transferFrom()方法做零拷贝复制文件时数据丢失. 我想要完成这样一个测试,将d盘中一个centos镜像文件(CentOS ...

  5. tga文件怎么打开_六安软件定制文件打开的时候乱码怎么解决?

    启达信息技术有限公司成立于2012年,是一家软件定制开发.移动终端应用开发的软件公司,同时也是软件云服务及企业信息化一揽子解决方案的提供商. 软件定制开发180 5607 0543 元旦的时候小编的朋 ...

  6. oracle 拷贝文件到asm,Oracle 从ASM复制文件到文件系统

    工作中,有时需要把文件从ASM中复制到文件系统中或者反过来,做一些维护操作,本文介绍了4种复制文件的的方法:ASMCMD中的cp命令(11g) dbms_file_transfer包 rman的con ...

  7. oracle通信通道的文件结尾_ORA-03113:通信通道的文件结尾解决

    提示ORA-03113:通信通道的文件结尾解决 事情原由:oracle安装到win7下,以为都是直接sqlplus / as sysdba,使用数据库,但最近连接时频繁报错, 提示ORA-03113: ...

  8. bat复制文件到指定目录同名_scp复制文件时排除指定文件

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文主要讲解如何在scp复制文件时排除指定文件. 举例 ...

  9. gradle拷贝静态资源文件_android-Gradle Copy任务不会复制文件

    我要执行以下任务,将文件从我的android项目资源文件复制到单元测试中ClassLoader实例可访问的其他路径. task copyResDirectoryToClasses(type: Copy ...

最新文章

  1. Flex4 Application中与Module通信
  2. 用groovy采集网页数据
  3. easy ui datagrid 中getSelections方法只能获取一行数据
  4. 西北大学集训队选拔赛 F-三生三世(STL set和map的简单应用)
  5. 关于ArcGIS Mobile回传数据中常遇到的问题整理!
  6. 计算机的组成 —— PCI(PCIE)、PCB
  7. 不续签合同,凭什么要求别人紧急加班
  8. 是否可以利用光压提高卫星轨道
  9. 137.只出现一次的数字II
  10. NOIP2017提高组题解(待填坑)
  11. 自定义view————涂鸦画板
  12. 八爪鱼采集ajax表格,设置八爪鱼采集器ajax延时采集分页列表的方法
  13. 2022数学建模国赛A题赛后总结
  14. 【HC-SR501人体红外传感器】
  15. ai技术对计算机的影响,人工智能技术的发展会对我们产生什么影响
  16. 和平精英有了氪金系统,玩家再也不敢开挂了?网友:你到亚服看看
  17. 计算机考研全国统考时段,考研初试各科目时间安排
  18. android wifi p2p框架,7.2.1 P2P架构
  19. OFDM中分析不同频偏(CFO)对通信链路的误码率影响仿真分析
  20. 在对设置表格设置table-layer:fixed样式后,发现表格中有一行合并过,其它没有合并的行的列宽会平均化,对列宽的设置会失效

热门文章

  1. 计算机基础及应用论文,计算机基础应用论文范文
  2. 景区手绘地图的绘制流程
  3. 谷歌:触屏不能代替物理按键
  4. JAVA单选组监听_java – 如何将侦听器附加到单选按钮
  5. EJB应用服务器集群技术分析
  6. db2安装包v10.5_IBM DB2 jdbc驱动 v10.5 官方版
  7. color-scheme CSS 属性的配色方案
  8. android progressbar换背景,Android自定义ProgressBar背景
  9. iphone小小总结
  10. 大数据分析对企业有什么好处