1. package com.util;
  2. import java.io.*;
  3. /**
  4. * 1,建立目的目录。 2,遍历源目录。 3,遍历过程中,创建文件或者文件夹。 原理:其实就是改变了源文件或者目录的目录头。
  5. * @datetime  Dsc  24
  6. */
  7. public class CopyDir {
  8. private File sDir, dDir, newDir;
  9. public CopyDir(String s, String d) {
  10. this(new File(s), new File(d));
  11. }
  12. CopyDir(File sDir, File dDir)// c:\\Test d:\\abc
  13. {
  14. this.sDir = sDir;
  15. this.dDir = dDir;
  16. }
  17. public void copyDir() throws IOException {
  18. // 是创建目的目录。也就是创建要拷贝的源文件夹。Test
  19. // 获取源文件夹名称。
  20. String name = sDir.getName();
  21. // 通过该名称在目的目录创建该文件夹,为了存放源文件夹中的文件或者文件夹。
  22. // 将目的目录和源文件夹名称,封装成File对象。
  23. newDir = dDir;
  24. // new File(dDir,name);
  25. // 调用该对象的mkdir方法。在目的目录创建该文件夹。d:\\abc\\Test
  26. newDir.mkdir();//
  27. // 遍历源文件夹。
  28. listAll(sDir);
  29. }
  30. /*
  31. * 将遍历目录封装成方法。 在遍历过程中,遇到文件创建文件。 遇到目录创建目录。
  32. */
  33. private void listAll(File dir) throws IOException {
  34. File[] files = dir.listFiles();
  35. for (int x = 0; x < files.length; x++) {
  36. if (files[x].isDirectory()) {
  37. createDir(files[x]);// 调用创建目录的方法。
  38. listAll(files[x]);// 在继续进行递归。进入子级目录。
  39. } else {
  40. createFile(files[x]);// 调用创建文件的方法。
  41. }
  42. }
  43. }
  44. /*
  45. * copy目录。通过源目录在目的目录创建新目录。
  46. */
  47. private void createDir(File dir) {
  48. File d = replaceFile(dir);
  49. d.mkdir();
  50. }
  51. /*
  52. * copy文件。
  53. */
  54. private void createFile(File file) throws IOException {
  55. File newFile = replaceFile(file);
  56. // copy文件是一个数据数据传输的过程。需要通过流来完成。
  57. FileInputStream fis = new FileInputStream(file);
  58. FileOutputStream fos = new FileOutputStream(newFile);
  59. byte[] buf = new byte[1024 * 2];
  60. int num = 0;
  61. while ((num = fis.read(buf)) != -1) {
  62. fos.write(buf, 0, num);
  63. }
  64. fos.close();
  65. fis.close();
  66. }
  67. /*
  68. * 替换路径。
  69. */
  70. private File replaceFile(File f) {
  71. // 原理是:将源目录的父目录(C:\\Tset),替换成目的父目录。(d:\\abc\\Test)
  72. String path = f.getAbsolutePath();// 获取源文件或者文件夹的决定路径。
  73. // 将源文件或者文件夹的绝对路径替换成目的路径。
  74. String newPath = path.replace(sDir.getAbsolutePath(), newDir
  75. .getAbsolutePath());
  76. // 将新的目的路径封装成File对象
  77. File newFile = new File(newPath);
  78. return newFile;
  79. }
  80. }

目录操作工具类 CopyDir.java的更多相关文章

  1. 拼音操作工具类 - PinyinUtil.java

    拼音操作工具类,提供字符串转换成拼音数组.汉字转换成拼音.取汉字的首字母等方法. 源码如下:(点击下载 -PinyinUtil.java.pinyin4j-2.5.0.jar ) import net ...

  2. 文件相关操作工具类——FileUtils.java

    文件相关操作的工具类,创建文件.删除文件.删除目录.复制.移动文件.获取文件路径.获取目录下文件个数等,满足大多数系统需求. 源码如下:(点击下载 FileUtils.java) import jav ...

  3. 【转载】ASP.NET工具类:文件夹目录Directory操作工具类

    在ASP.NET开发网站的过程中,有时候会涉及到文件夹相关操作,如判断文件夹目录是否存在.删除文件夹目录.创建文件.删除文件.复制文件夹等等.这一批有关文件目录的操作可以通过Directory类.Fi ...

  4. Java SE 之 数据库操作工具类(DBUtil)设计

    JDBC创建数据库基本连接 //1.加载驱动程序 Class.forName(driveName); //2.获得数据库连接 Connection connection = DriverManager ...

  5. 文件操作工具类: 文件/目录的创建、删除、移动、复制、zip压缩与解压.

    FileOperationUtils.java package com.xnl.utils; import java.io.BufferedInputStream; import java.io.Bu ...

  6. JAVA文件操作工具类(读、增、删除、复制)

    使用JAVA的JFinal框架 1.上传文件模型类UploadFile /** * Copyright (c) 2011-2017, James Zhan 詹波 (jfinal@126.com). * ...

  7. docker 部署vsftpd服务、验证及java ftp操作工具类

    docker部署vsftpd服务 新建ftp文件存储目录/home/ftp cd /home mkdir ftp 创建一个组,用于存放ftp用户 groupadd ftpgroups 创建ftp用户, ...

  8. java基础37 集合框架工具类Collections和数组操作工具类Arrays

    一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...

  9. java/javascript 时间操作工具类

    一.java 时间操作工具类 import org.springframework.util.StringUtils; import java.text.ParseException; import ...

随机推荐

  1. Golang Deco Enco

    mproto.go package mproto import ( "bytes" "encoding/binary" "fmt" &quo ...

  2. CSS 实现:两栏布局(一边固定,一边自适应)

    ☊[实现要求]:CSS实现左边固定,右边自适应父容器宽度的两栏布局. <body> <div class="left"></div> <d ...

  3. lanuchy快捷操作

    down arrow: display history shift+delete: remove the item from the distory

  4. vim 把满足条件的数字进行加上一些数字

    1,1,1,n4s-1 1,3,4,n3s= 1,4,6,e4h= 1,5,8,e4h-1 1,6,2,e3ntx-2 1,7,5,n1s+2 1,8,7,n3s=   比如以上的数据格式以“,”为列 ...

  5. 徹底刪除atom

    rm -f ~/.atom rm -f /usr/local/bin/atom rm -f /usr/local/bin/apm rm -f /Applications/Atom.app rm -f ...

  6. JavaScript----函数的封装、继承和多态

    1.封装:把实现一个功能的代码放在一个函数中封装起来,以后再想实现这个功能的时候,我们不需要重新的编写代码了,只需要执行对应的函数即可,我们把这种机制就称之为"函数的封装"--&g ...

  7. HTML <meta> 标签 遇到<meta http-equiv="refresh" content="0; url=">详解

    页面定期刷新,如果加url的,则会重新定向到指定的网页,content后面跟的是时间(单位秒),把这句话加到指定网页的<head></head>里一般也用在实时性很强的应用中, ...

  8. JAVA 23种设计模式(转)

    1.FACTORY?追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了.麦当劳和肯德基就是生产鸡翅 ...

  9. window IIS6/IIS7取消脚本执行权限,禁止运行脚本木马

    网站安全中,对目录的执行权限是非常敏感的,一般来说,可以写入的目录是不能够拥有脚本的执行权限的,可写入的目录如: data.uploads,data目录主要是基本配置文件和缓存数据,uploads则是 ...

  10. JavaWeb学习记录(十四)——商城购物之字符串拼接实现最近浏览商品和购物车的功能

    一.字符串拼接的工具类 package blank.util; import java.util.Iterator;import java.util.Map;import java.util.Set; ...