import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.List;/*** 文件拷贝* @author lixiaolong*/
public class FileTransfer {/*** 使用通道的方式进行整个目录/子目录/文件的拷贝* @throws IOException*/public void useChannel() throws IOException {String driver = "F:\\AgileController";String path = "/tomcat/webapps/OPMUI/customize";File input = new File(driver + path);String bakpath = "\\syncbak";File bakFile = new File(driver + bakpath);if(bakFile.exists()){deleteFile(bakFile);}bakFile.mkdirs();File output = new File(driver + bakpath + path);if(input.isDirectory()) {output.mkdirs();List<File> allFileList = new ArrayList<File>();getAllFiles(input, allFileList);for(File f : allFileList) {String outputPath = f.getCanonicalPath();if(outputPath.startsWith(driver)){outputPath = driver + bakpath + outputPath.substring(driver.length(), outputPath.length());}output = new File(outputPath);if(f.isDirectory()){output.mkdirs();} else {fileCopy(f, output);}}} else {fileCopy(input, output);}}/*** 递归列出所有子目录/文件* @param directory* @param allFileList*/private void getAllFiles(File directory, List<File> allFileList) {File flist[] = directory.listFiles();if (flist == null || flist.length == 0) {return;}for (File f : flist) {if (f.isDirectory()) {//列出所有子文件夹
                allFileList.add(f);getAllFiles(f, allFileList);} else {//列出所有文件
                allFileList.add(f);}}}/*** 使用通道的方式对单个文件进行拷贝* @param input* @param output* @throws IOException*/private void fileCopy(File input, File output) throws IOException {if(!input.exists()) {return;}if(!output.exists()) {output.createNewFile();}FileInputStream fis = new FileInputStream(input);FileOutputStream fos = new FileOutputStream(output);FileChannel inputChannel = null;FileChannel outputChannel = null;try {inputChannel = fis.getChannel();outputChannel = fos.getChannel();outputChannel.transferFrom(inputChannel, 0, inputChannel.size());} finally {inputChannel.close();outputChannel.close();fis.close();fos.close();}}/*** 级联删除文件* @param file*/private void deleteFile(File file){if (file.isDirectory()){File[] files = file.listFiles();for (File f : files){f.delete();}}file.delete();}public static void main(String[] args) {FileTransfer ft = new FileTransfer();try {ft.useChannel();} catch (IOException e) {System.out.println(e);}System.out.println("end");}}

转载于:https://www.cnblogs.com/aaroncnblogs/p/8656180.html

Java复制目录/子目录/文件相关推荐

  1. windows linux复制文件夹命令,ubuntu下复制目录和文件的指令以及和windows下的copy方式...

    Ubuntu中复制文件或目录的命令 cp(copy)命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中. 语法: cp [选项] 源文件或目录 目标文件或目录 说明:该命令把指定的源文件复制 ...

  2. c#复制包含子目录文件夹代码

    c#没有复制目录的代码,需要通过递归实现复制目录: 需要引用System.IO命名空间,实现代码如下: private static bool CopyDirectory(string SourceP ...

  3. 复制文件到指定文件夹下,复制目录和文件

    package JavaHeiMa02.src.复制文件.复制多级文件; import java.io.File; import java.io.FileInputStream; import jav ...

  4. linux复制目录命令夹,linux复制目录(文件夹)和打包命令

    linux复制目录(文件夹)和打包命令 复制目录命令: cp 需要复制的目录 -r 目的目录 (注意带参数-r) 压缩文件:zip -r 压缩后文件名 需要压缩的目录 喎?http://www.Bkj ...

  5. php复制目录及文件

    <?php /*复制目录 */function copydir($dirsrc,$dirto){if(is_file($dirto)){echo "目标不是目录不能创建";r ...

  6. WINDOWS JAVA 某个目录(文件夹)拒绝访问

    原因:我们要打开一个文件,但是给的是个目录(文件夹),就会提示拒绝访问 解决方案:在目录后面任意取名文件名即可

  7. Java遍历目录下文件的方法(包括子目录、文件内容)

    一.遍历目录下的文件(不包括子目录下文件) public static void main(String[] args) {String inputPath = "F:\\log\\test ...

  8. java搜索目录特定文件夹

    package IO;import java.io.File; import java.util.Locale;public class FileDemo {public static void ma ...

  9. java实现英文文件单词搜索系统_java对于目录下文件的单词查找操作代码实现

    这篇文章主要介绍了java对于目录下文件的单词查找操作代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 写入文件的目录.代码通过找目录下的文件 ...

最新文章

  1. 如何解决android studio的模拟器有密码的问题
  2. azure 导入 bak_如何使用BULK INSERT在本地和Azure中导入数据
  3. Xcode7.x中安装Alcatraz
  4. java OOP及相关基础知识汇总(转)
  5. 《精通Spring4.X企业应用开发实战》读后感第六章(国际化)
  6. 图标X轴this显示值自定义
  7. 站酷暂停更新怎么办?这18个免费设计资源网站值得收藏!
  8. 线性代数-向量空间-基向量定义
  9. VS快捷键大全(包含记忆的口诀和演示)
  10. 微信号码检测是什么意思
  11. word文档通配符换行_Word文档每一行后面都有小箭头如何消除?
  12. 电脑术语中:directory 和 folder 的区别
  13. Android如何实现超级棒的沉浸式体验
  14. 影响到网站收录有哪些方面呢
  15. 列表xcode项目下所有的lnfo.plist
  16. 青少年模式形同虚设 半数App诱导打赏
  17. av_buffersrc_add_frame分析
  18. 绿色家居新革命 变频技术让你聪明节电
  19. apache 配置http跳转https
  20. i5集显和独显的区别_核显和独显、集成显卡有什么区别,那个好!

热门文章

  1. Effective Java 读书笔记----第三章
  2. R语言:使用REmap绘制超炫酷的地图
  3. automapper java 有什么_对象映射工具AutoMapper介绍
  4. C++知识点43——解引用运算符和箭头运算符的重载及智能指针类的实现
  5. C++知识点2——指针、引用基础
  6. MATLAB实现微积分基础知识(求导,积分,插值,曲线拟合,最小二乘)
  7. python三维图的坐标_六维图见过么?Python 画出来了
  8. java plc通讯_树莓派+西门子PLC+Aliyun
  9. Express 搭建web服务器
  10. J0ker的CISSP之路:复习Access Control(10)