这是学校java课的一道实验题,题目如下:编程,根据指定的源和目标位置,完成指定文件或文件夹(包括其中的子文件夹、子文件)的复制。

以下是我的实现,使用了递归:

 package com.simon.myfinal;

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream; /**
* Created by Rainmer on 2015/6/28.
*/
public class FileCopy {
public static void main(String[] args) {
String oldPath = "D:/bower";
String newPath = "D:/bowerCopy";
File dirNew = new File(newPath);
dirNew.mkdirs();//可以在不存在的目录中创建文件夹
directory(oldPath, newPath);
System.out.println("复制文件夹成功");
} /**
* 复制单个文件
* @param oldPath 要复制的文件名
* @param newPath 目标文件名
*/
public static void copyfile(String oldPath, String newPath) {
int hasRead = 0;
File oldFile = new File(oldPath);
if (oldFile.exists()) {
try {
FileInputStream fis = new FileInputStream(oldFile);//读入原文件
FileOutputStream fos = new FileOutputStream(newPath);
byte[] buffer = new byte[1024];
while ((hasRead = fis.read(buffer)) != -1) {//当文件没有读到结尾
fos.write(buffer, 0, hasRead);//写文件
}
fis.close();
} catch (Exception e) {
System.out.println("复制单个文件操作出错!");
e.printStackTrace();
}
}
} /**
*
* @param oldPath 要复制的文件夹路径
* @param newPath 目标文件夹路径
*/
public static void directory(String oldPath, String newPath) {
File f1 = new File(oldPath);
File[] files = f1.listFiles();//listFiles能够获取当前文件夹下的所有文件和文件夹
for (int i = 0; i < files.length; i++) {
if (files[i].isDirectory()) {
File dirNew = new File(newPath + File.separator + files[i].getName());
dirNew.mkdir();//在目标文件夹中创建文件夹
//递归
directory(oldPath + File.separator + files[i].getName(), newPath + File.separator + files[i].getName());
} else {
String filePath = newPath + File.separator + files[i].getName();
copyfile(files[i].getAbsolutePath(), filePath);
} }
}
}

java实现文件夹(包括其中的子文件夹、子文件)的复制——递归的更多相关文章

  1. java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

    (转自:http://blog.csdn.net/gangwazi0525/article/details/7569701) import java.io.File; public class Rea ...

  2. JAVA利用递归的方法删除一个文件夹以及文件夹下所有的子文件

    public static boolean deleteFolder(String url) { File file = new File(url); if (!file.exists()) { re ...

  3. ci 的控制器文件夹下开加子文件夹

    在一个比较大的项目中,希望controllers下再细分子文件夹.例如:controllers/pj,controllers/xxk等. 做法是: 1.在controllers下添加相关的子文件夹,例 ...

  4. Python3 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下

    #!/usr/bin/env python3 # -*- coding:utf8 -*- # @TIME :2018/9/17 9:02 # @Author:dazhan # @File :copyf ...

  5. python 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下

    #!/usr/bin/env python3 # -*- coding:utf8 -*- # @TIME :2018/9/17 9:02 # @Author:dazhan # @File :copyf ...

  6. GCC编译和链接多个文件(包括源文件、目标文件、汇编文件等)

    编译多个源代码文件会生成多个目标文件,每个目标文件都包含一个源文件的机器码和相关数据的符号表.除非使用-c选项指示 GCC 只编译不链接,否则 GCC 会使用临时文件作为目标文件输出: $ gcc - ...

  7. 源码浅析:MySQL一条insert操作,会写哪些文件?包括UNDO相关的文件吗?

    DML操作的大致流程 在解答上述疑惑之前,我们来梳理一下DML操作的大致流程: 1.语法解析.语义解析 2.生成执行计划 3.事务修改阶段 1) 激活事务,事务状态由not_active变为activ ...

  8. C++ MFC 操作文件夹及属性(新建,删除[包含子文件[夹]],剪切,复制,重命名)

    源文件:http://pan.baidu.com/s/169HCL 运行mfc缺失的动态连接库:http://pan.baidu.com/s/17pGlT 截图: 不足之处仅供参考,哈哈.

  9. python批量删除子文件夹中的空子文件夹

    例如A文件夹下有许多子文件夹,我需要获得的是子文件夹中的图片,但是现在子文件夹中不光有图片,还混入了空的文件夹(在使用OpenImages工具箱的时候,按照检索的方式下载的图片文件中是带有label的 ...

  10. 将exe和dll文件打包成单一的启动文件

    当我们用 VS 或其它编程工具生成了可执行exe要运行它必须要保证其目录下有一大堆dll库文件,看起来很不爽,用专业的安装程序生成软件又显得繁琐,下面这个方法教你如何快速把exe文件和dll文件打包成 ...

随机推荐

  1. [Swust OJ 360]--加分二叉树(区间dp)

    题目链接:http://acm.swust.edu.cn/problem/360/ Time limit(ms): 1000 Memory limit(kb): 65535   Description ...

  2. 使2个div 在一行上显示

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  3. 第一节 生命周期和Zend引擎

    一切的开始: SAPI接口 SAPI(Server Application Programming Interface)指的是PHP具体应用的编程接口, 就像PC一样,无论安装哪些操作系统,只要满足了 ...

  4. idea14 maven项目 jdk编译版本无法修改

    需要在pom中加入以下的内容,即可修改对应的jdk版本 <build> <plugins> <plugin> <groupId>org.apache.m ...

  5. iOS自动自动隐藏软键盘

    自动隐藏软键盘,分为两步,一个是单击软键盘外部任意空间:另外一个是单击软键盘上的return键.下面依次实现 单击软键盘外部空间键隐藏软键盘: 一:在viewDidLoad中添加一个UITabGest ...

  6. ThinkPHP常量参考

    常用常量 APP_NAME 当前项目名称 APP_PATH 当前项目路径 GROUP_NAME 当前分组名称 MODULE_NAME 当前Action模块名称 ACTION_NAME 当前操作的名称 ...

  7. java断言

    public class New{ public static void main(String[] args){ assert false; System.out.println("pas ...

  8. 远程管理服务SSHD

    安装SSH yum install openssh

  9. JAVA GUI学习 - JInternalFrame浮动窗口:可拖拽窗口(依赖于父窗口)

    public class JInternalFrameKnow extends JInternalFrame { public JInternalFrameKnow() { this.setBound ...

  10. I can do it!(贪心)

    I can do it! Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...