这是学校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. JavaSE_ API常用对象 总目录(11~14)

    JavaSE学习总结第11天_开发工具 & API常用对象111.01 常见开发工具介绍11.02 Eclipse和MyEclipse的概述11.03 Eclipse的下载安装及卸载11.04 ...

  2. java ee环境搭建

    1.安装java(tm)2 platform 2.下载安装Java EE SDK 版本:Java Platform,Enterprise Edition 7 SDK (with JDK 7u45) 下 ...

  3. Bootstrap dropdown 使用

    同样是2种方式 参考http://www.bootcss.com/javascript.html#dropdowns JS方式调用 http://www.w3resource.com/twitter- ...

  4. 大数据情报分析公司Palantir

    最近在学习图数据计算方面技术,在寻找现实应用时发现美国Palantir公司已将所谓的多源异构数据融合分析技术运用的炉火纯青.Palantir创立于2004年,最早是因PayPal公司为保障支付安全而逐 ...

  5. css 一些事

    1.两个div左边的固定宽度右边的自动填充的css <div id="main" style="width:98%;"> <div id=&q ...

  6. 安装 Rational Rose 启动报错:无法启动此程序,因为计算机中丢失 suite objects.dll

    安装完以后提示找不到 suite objects.dll: 经查找,该 dll 存在: 找不到的原因是,安装程序自动设置在 Path 中的环境变量有误: 把最后的 common 改成 Common: ...

  7. 禁用Java DNS缓存-Disable DNS caching

    Once an application has performed network access (i.e. urlconnection, parsing of xml document with e ...

  8. WIZnet即将推出高性能网络芯片W5500

    WIZnet将于9月份推出高性能网络芯片W5500,这是继W5100.W5200和W5300之后一款全新的全硬件TCP/IP协议栈网络芯片,这款芯片具有更低功耗与工作温度,及改良工艺,是嵌入式以太网的 ...

  9. HDU 3415 Max Sum of Max-K-sub-sequence

    题目大意:找长度不超过k的最大字段和. 题解:单调队列维护之前k的最小值,思想是对于每一个入队的新元素,如果队尾元素比其大则一直删减,然后插入新元素,对于队首的元素若与当前枚举两相差超过k则直接删去. ...

  10. Qt Creator needs a compiler set up to build. Configure a compiler in the kit options - Stack Overflow

    Qt Creator needs a compiler set up to build. Configure a compiler in the kit options - Stack Overflo ...