java实现文件夹(包括其中的子文件夹、子文件)的复制——递归
这是学校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实现文件夹(包括其中的子文件夹、子文件)的复制——递归的更多相关文章
- java遍历给定目录,树形结构输出所有文件,包括子目录中的文件
(转自:http://blog.csdn.net/gangwazi0525/article/details/7569701) import java.io.File; public class Rea ...
- JAVA利用递归的方法删除一个文件夹以及文件夹下所有的子文件
public static boolean deleteFolder(String url) { File file = new File(url); if (!file.exists()) { re ...
- ci 的控制器文件夹下开加子文件夹
在一个比较大的项目中,希望controllers下再细分子文件夹.例如:controllers/pj,controllers/xxk等. 做法是: 1.在controllers下添加相关的子文件夹,例 ...
- Python3 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
#!/usr/bin/env python3 # -*- coding:utf8 -*- # @TIME :2018/9/17 9:02 # @Author:dazhan # @File :copyf ...
- python 指定文件夹下所有文件(包括子目录下的文件)拷贝到目标文件夹下
#!/usr/bin/env python3 # -*- coding:utf8 -*- # @TIME :2018/9/17 9:02 # @Author:dazhan # @File :copyf ...
- GCC编译和链接多个文件(包括源文件、目标文件、汇编文件等)
编译多个源代码文件会生成多个目标文件,每个目标文件都包含一个源文件的机器码和相关数据的符号表.除非使用-c选项指示 GCC 只编译不链接,否则 GCC 会使用临时文件作为目标文件输出: $ gcc - ...
- 源码浅析:MySQL一条insert操作,会写哪些文件?包括UNDO相关的文件吗?
DML操作的大致流程 在解答上述疑惑之前,我们来梳理一下DML操作的大致流程: 1.语法解析.语义解析 2.生成执行计划 3.事务修改阶段 1) 激活事务,事务状态由not_active变为activ ...
- C++ MFC 操作文件夹及属性(新建,删除[包含子文件[夹]],剪切,复制,重命名)
源文件:http://pan.baidu.com/s/169HCL 运行mfc缺失的动态连接库:http://pan.baidu.com/s/17pGlT 截图: 不足之处仅供参考,哈哈.
- python批量删除子文件夹中的空子文件夹
例如A文件夹下有许多子文件夹,我需要获得的是子文件夹中的图片,但是现在子文件夹中不光有图片,还混入了空的文件夹(在使用OpenImages工具箱的时候,按照检索的方式下载的图片文件中是带有label的 ...
- 将exe和dll文件打包成单一的启动文件
当我们用 VS 或其它编程工具生成了可执行exe要运行它必须要保证其目录下有一大堆dll库文件,看起来很不爽,用专业的安装程序生成软件又显得繁琐,下面这个方法教你如何快速把exe文件和dll文件打包成 ...
随机推荐
- JavaSE_ API常用对象 总目录(11~14)
JavaSE学习总结第11天_开发工具 & API常用对象111.01 常见开发工具介绍11.02 Eclipse和MyEclipse的概述11.03 Eclipse的下载安装及卸载11.04 ...
- java ee环境搭建
1.安装java(tm)2 platform 2.下载安装Java EE SDK 版本:Java Platform,Enterprise Edition 7 SDK (with JDK 7u45) 下 ...
- Bootstrap dropdown 使用
同样是2种方式 参考http://www.bootcss.com/javascript.html#dropdowns JS方式调用 http://www.w3resource.com/twitter- ...
- 大数据情报分析公司Palantir
最近在学习图数据计算方面技术,在寻找现实应用时发现美国Palantir公司已将所谓的多源异构数据融合分析技术运用的炉火纯青.Palantir创立于2004年,最早是因PayPal公司为保障支付安全而逐 ...
- css 一些事
1.两个div左边的固定宽度右边的自动填充的css <div id="main" style="width:98%;"> <div id=&q ...
- 安装 Rational Rose 启动报错:无法启动此程序,因为计算机中丢失 suite objects.dll
安装完以后提示找不到 suite objects.dll: 经查找,该 dll 存在: 找不到的原因是,安装程序自动设置在 Path 中的环境变量有误: 把最后的 common 改成 Common: ...
- 禁用Java DNS缓存-Disable DNS caching
Once an application has performed network access (i.e. urlconnection, parsing of xml document with e ...
- WIZnet即将推出高性能网络芯片W5500
WIZnet将于9月份推出高性能网络芯片W5500,这是继W5100.W5200和W5300之后一款全新的全硬件TCP/IP协议栈网络芯片,这款芯片具有更低功耗与工作温度,及改良工艺,是嵌入式以太网的 ...
- HDU 3415 Max Sum of Max-K-sub-sequence
题目大意:找长度不超过k的最大字段和. 题解:单调队列维护之前k的最小值,思想是对于每一个入队的新元素,如果队尾元素比其大则一直删减,然后插入新元素,对于队首的元素若与当前枚举两相差超过k则直接删去. ...
- 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 ...