Java复制目录/子目录/文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
import java.util.ArrayList;
import java.util.List; /**
* 文件拷贝
* @author lixiaolong
*/
public class FileTransfer { /**
* 使用通道的方式进行整个目录/子目录/文件的拷贝
* @throws IOException
*/
public void useChannel() throws IOException {
String driver = "F:\\AgileController";
String path = "/tomcat/webapps/OPMUI/customize";
File input = new File(driver + path); String bakpath = "\\syncbak";
File bakFile = new File(driver + bakpath);
if(bakFile.exists())
{
deleteFile(bakFile);
}
bakFile.mkdirs(); File output = new File(driver + bakpath + path); if(input.isDirectory()) {
output.mkdirs(); List<File> allFileList = new ArrayList<File>();
getAllFiles(input, allFileList);
for(File f : allFileList) {
String outputPath = f.getCanonicalPath();
if(outputPath.startsWith(driver))
{
outputPath = driver + bakpath + outputPath.substring(driver.length(), outputPath.length());
}
output = new File(outputPath);
if(f.isDirectory())
{
output.mkdirs();
} else {
fileCopy(f, output);
}
}
} else {
fileCopy(input, output);
}
} /**
* 递归列出所有子目录/文件
* @param directory
* @param allFileList
*/
private void getAllFiles(File directory, List<File> allFileList) {
File flist[] = directory.listFiles();
if (flist == null || flist.length == 0) {
return;
}
for (File f : flist) {
if (f.isDirectory()) {
//列出所有子文件夹
allFileList.add(f);
getAllFiles(f, allFileList);
} else {
//列出所有文件
allFileList.add(f);
}
}
} /**
* 使用通道的方式对单个文件进行拷贝
* @param input
* @param output
* @throws IOException
*/
private void fileCopy(File input, File output) throws IOException {
if(!input.exists()) {
return;
} if(!output.exists()) {
output.createNewFile();
} FileInputStream fis = new FileInputStream(input);
FileOutputStream fos = new FileOutputStream(output);
FileChannel inputChannel = null;
FileChannel outputChannel = null;
try {
inputChannel = fis.getChannel();
outputChannel = fos.getChannel();
outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
} finally {
inputChannel.close();
outputChannel.close();
fis.close();
fos.close();
}
} /**
* 级联删除文件
* @param file
*/
private void deleteFile(File file)
{
if (file.isDirectory())
{
File[] files = file.listFiles();
for (File f : files)
{
f.delete();
}
}
file.delete();
} public static void main(String[] args) {
FileTransfer ft = new FileTransfer();
try {
ft.useChannel();
} catch (IOException e) {
System.out.println(e);
}
System.out.println("end");
} }
Java复制目录/子目录/文件的更多相关文章
- c#复制包含子目录文件夹代码
c#没有复制目录的代码,需要通过递归实现复制目录: 需要引用System.IO命名空间,实现代码如下: private static bool CopyDirectory(string SourceP ...
- 一个Java复制目录的方法(递归)
/** * 将目标目录复制为指定目录(也可以用于复制文件) * @param src 源路径 * @param dest 目标路径 * @throws IOException */ public st ...
- php复制目录及文件
<?php /* 复制目录 */ function copydir($dirsrc,$dirto){ if(is_file($dirto)){ echo "目标不是目录不能创建&quo ...
- linux cp复制目录所有文件
mkdir gpio cp -r build/ /home/yl/gpio 这样就把build目录及所有文件都拷贝到gpio文件夹中.
- C++复制、压缩文件夹
之前写过一篇用zlib库来压缩的,但zlib只能压缩文件,我需要压缩文件夹,要想压缩文件夹还得利用zlib库自己写代码,我是真的服了,一个开源库这么不好用. C++复制文件夹也是麻烦事,网上这篇文章: ...
- Linux复制和移动文件
cp:复制文件和目录 cp /etc/log /mu 把/etc/log复制到/mu目录下 -r:递归复制目录 -f:强制复制目录或文件 -i:交互式 -p:保留源文件或目录的属性 mv:移动或重命名 ...
- 小师妹学JavaIO之:目录还是文件
目录 简介 linux中的文件和目录 目录的基本操作 目录的进阶操作 目录的腰疼操作 总结 简介 目录和文件傻傻分不清楚,目录和文件的本质到底是什么?在java中怎么操纵目录,怎么遍历目录.本文F师兄 ...
- java 提取目录下所有子目录的文件到指定位置
package folder; import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundExcept ...
- java中实现File文件的重命名(renameTo)、将文件移动到其他目录下、文件的复制(copy)、目录和文件的组合(更加灵活方便)
欢迎加入刚建立的社区:http://t.csdn.cn/Q52km 加入社区的好处: 1.专栏更加明确.便于学习 2.覆盖的知识点更多.便于发散学习 3.大家共同学习进步 3.不定时的发现金红包(不多 ...
随机推荐
- php7新特性总结
PHP新功能总结 改进的性能 - 将PHPNG代码合并到PHP7中,速度是PHP 5的两倍. 降低内存消耗 - 优化的PHP 7使用较少的资源. 标量类型声明 - 现在可以强制执行参数和返回类型. 一 ...
- 多级分类标签{dede:channelartlist}实现当前栏目颜色高亮显示
我们知道,如果要在网站上多级分类显示的话,可以用下面的标签实现: {dede:channelartlist typeid='4' cacheid='channelsonlist'} < ...
- linux环境,通过rpm删除mysql包,报错:error reading information on service mysqld: Invalid argument
问题描述: 今天在做saltstack的练习,想要通过sls的方式,在远程进行mysql数据库的安装,发现无法通过service的方式启动数据库,然后就想给删除了重新进行安装,在通过rpm -e进行删 ...
- javascript:变量的作用域
window.onload = function (){ // 1) 在if或else代码块中声明的变量,在代码块的外面也可以取到 if(1==1){ var b = 12; }else{ var b ...
- MISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report e
早上来到公司,线上的项目报错: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionExcepti ...
- ux.form.field.GridDate 支持快速选择日期的日期控件
效果如图,亲测6.2.1版本可用 /** *支持快速选择日期的日期控件 */ Ext.define('ux.form.field.GridDate', { extend: 'Ext.form.fiel ...
- 字符串匹配的 Boyer-Moore 算法
上一篇文章,我介绍了 字符串匹配的KMP算法 但是,它并不是效率最高的算法,实际采用并不多.各种文本编辑器的” 查找” 功能(Ctrl+F),大多采用 Boyer-Moore 算法. 下面,我根据 M ...
- PDO连接数据库-Xmodel
<?php/* * Copyright (c) 2018, 北京博习园教育科技有限公司 * All rights reserved. * * 文件名称: xmodel.php * 摘 要: 模型 ...
- windows环境下 php 将office文件(word/excel/ppt)转化为pdf(转)
将office文件转化为pdf的方法有 1.利用openoffice提供的服务 (比较简单,但是转化的效果不太好) 2.使用office提供的服务 (注:这在windows服务器上,并且服务器上面安装 ...
- 22.1 、react生命周期(一)
在每个react组件中都有以下几个生命周期方法~我们需要在不同阶段进行讨论 组件生命周期概述 1.初始化 在组件初始化阶段会执行 constructor static getDerivedStateF ...