/**
* 将目标目录复制为指定目录(也可以用于复制文件)
* @param src 源路径
* @param dest 目标路径
* @throws IOException
*/
public static void copyDir(File src, File dest) throws IOException {
if(!src.exists()) { // 检查源路径是否存在
System.out.println("源目录不存在!");
} else if(src.isFile()) { // 如果源路径是一个文件
if(dest.isDirectory()) {
// 不能将文件复制为一个目录
System.out.println("目标路径不是一个文件!");
}else {
// 复制文件
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
byte[] arr = new byte[1024 * 8];
int len;
while((len = fis.read(arr)) != -1) {
fos.write(arr, 0, len);
}
fis.close();
fos.close();
}
} else { // 如果源路径是一个目录
if(dest.isFile()) {
// 不能将目录复制为一个文件
System.out.println("目标路径不是一个目录!");
} else {
// 先检查目标是否存在, 不存在则创建
if(!dest.exists()) {
dest.mkdirs();
}
// 如果目标路径是一个目录, 递归调用本方法进行复制
// 获取源目录的子文件/目录
String[] subFiles = src.list();
// 遍历源目录进行复制
for (String subFile : subFiles) {
copyDir(new File(src, subFile), new File(dest, subFile));
}
}
}
} /**
* 测试代码
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
System.out.println("请输入源路径:");
String src = sc.nextLine();
System.out.println("请输入目标路径:");
String dest = sc.nextLine();
copyDir(new File(src), new File(dest));
}

一个Java复制目录的方法(递归)的更多相关文章

  1. Java复制目录/子目录/文件

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  2. mac os intellij如何快路查看一个java类的所有方法,结构

    如果是自己写的java类,点击点击导航的project-setting-show members 如果是系统库的,点击structure 再点一下lib中的类,或者快捷键 command+F12

  3. c 结构体 & 函数指针模拟实现一个java class(类) 和方法

    闲来无事,纯粹练习. student.h #ifndef STUDENT_H_INCLUDED #define STUDENT_H_INCLUDED #include <memory.h> ...

  4. java复制图片实现方法

    原图片路径:srcpic 目的图片路径:despic public static void copyPic(String srcpic, String despic){ File file1=new ...

  5. 如何唯一确定一个 Java 类?

    今天偶然想起之前和朋友讨论过的一个问题:如何唯一确定一个 Java 类?我相信大多数朋友遇到这个问题的回答都是:类的全路径呗.但事实上,唯一确定一个 Java 类,单单靠类路径是不够的,还要多加上一个 ...

  6. 一个Java递归删除目录的方法

    public static void delDir(File f) { // 判断是否是一个目录, 不是的话跳过, 直接删除; 如果是一个目录, 先将其内容清空. if(f.isDirectory() ...

  7. Java: 复制文件最快方法

    利用Java复制文件到处都可以用到,这里总结了一个类供大家参考.里面总共有两个方法: public static boolean copyFile(String srcFileName, String ...

  8. Java连载30-方法重载、方法递归

    一.方法重载 1.又被称为overload 2.方法重载使用场景 功能类似的时候,尽可能仍方法名相同(但是功能不同或者不相似的时候,方法名尽量不同) 3.什么条件满足之后,可以构成方法重载 (1)在同 ...

  9. Java parseInt_使用此方法得到的原始数据类型的一个特定的字符串

    Java parseInt解释加方法示例     使用此方法得到的原始数据类型的一个特定的字符串. parseXxx()是一个静态方法,可以有一个参数或两个         java parseInt ...

随机推荐

  1. 参考__Linux

    教程 billie66.github.iocentos下配置vsftpd虚拟用户教程Linux命令大全ubuntu14.04 配置vsftp 实用技能 移动 Ubuntu16.04 桌面左侧的启动器到 ...

  2. FirstUniqueCharacterInString

    Given a string, find the first non-repeating character in it and return it's index. If it doesn't ex ...

  3. js加密解密

    <script> document.write("<xmp>"); document.write(function(p,a,c,k,e,r){}(''.sp ...

  4. springMVC+mybatis+spring整合案例

    1.web.xml a:配置spring监听,使web容器在启动时加载spring的applicationContext.xml <listener> <listener-class ...

  5. [经验] Win7减肥攻略(删文件不删功能、简化优化系统不简优化性能)

    [经验] Win7减肥攻略(删文件不删功能.简化优化系统不简优化性能) ☆心梦无痕☆ 发表于 2014-1-24 11:15:04 https://www.itsk.com/thread-316471 ...

  6. No package mysql-server available.

    Centos 7 comes with MariaDB instead of MySQL. MariaDb is a open source equivalent to MySQL and can b ...

  7. ttf文件属性详细信息

    python实现ttf文件属性详细信息 import sys from fontTools import ttLib def shortName( font ): name = "" ...

  8. Java Integer(-128~127)值的==和equals比较产生的思考

    最近在项目中遇到一个问题,两个值相同的Integer型值进行==比较时,发现Integer其中的一些奥秘,顺便也复习一下==和equals的区别,先通过Damo代码解释如下: System.out.p ...

  9. Javascript中apply、call、bind

    网上文章虽多,大多复制粘贴,且晦涩难懂,我希望能够通过这篇文章,能够清晰的提升对apply.call.bind的认识,并且列出一些它们的妙用加深记忆. apply.call 在 javascript ...

  10. Linux FTP的安装与配置

    Linux FTP的安装与配置   ftp安装部分,操作步骤如下: 可以使用yum命令直接安装ftp # yum install vsftpd ftp服务的开启与关闭命令: 开启:# service  ...