mirror of https://github.com/apache/activemq.git
updated copy() method to copy directories
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@979216 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
5f400b3853
commit
0004917cd8
|
@ -20,9 +20,12 @@ import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FilenameFilter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @version $Revision$
|
* @version $Revision$
|
||||||
|
@ -150,6 +153,71 @@ public final class IOHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void copyFile(File src, File dest) throws IOException {
|
public static void copyFile(File src, File dest) throws IOException {
|
||||||
|
copyFile(src,dest,null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void copyFile(File src, File dest,FilenameFilter filter) throws IOException {
|
||||||
|
if (src.getCanonicalPath().equals(dest.getCanonicalPath()) == false) {
|
||||||
|
if (src.isDirectory()) {
|
||||||
|
if (dest.isDirectory()) {
|
||||||
|
mkdirs(dest);
|
||||||
|
List<File> list = getFiles(src,filter);
|
||||||
|
for (File f : list) {
|
||||||
|
if (f.isFile()) {
|
||||||
|
File target = new File(getCopyParent(src, dest, f), f.getName());
|
||||||
|
copySingleFile(f, target);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} else if (dest.isDirectory()) {
|
||||||
|
mkdirs(dest);
|
||||||
|
File target = new File(dest, src.getName());
|
||||||
|
copySingleFile(src, target);
|
||||||
|
} else {
|
||||||
|
copySingleFile(src, dest);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static File getCopyParent(File from, File to, File src) {
|
||||||
|
File result = null;
|
||||||
|
File parent = src.getParentFile();
|
||||||
|
String fromPath = from.getAbsolutePath();
|
||||||
|
if (parent.getAbsolutePath().equals(fromPath)) {
|
||||||
|
//one level down
|
||||||
|
result = to;
|
||||||
|
}else {
|
||||||
|
String parentPath = parent.getAbsolutePath();
|
||||||
|
String path = parentPath.substring(fromPath.length());
|
||||||
|
result = new File(to.getAbsolutePath()+File.separator+path);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static List<File> getFiles(File dir,FilenameFilter filter){
|
||||||
|
List<File> result = new ArrayList<File>();
|
||||||
|
getFiles(dir,result,filter);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void getFiles(File dir,List<File> list,FilenameFilter filter) {
|
||||||
|
if (!list.contains(dir)) {
|
||||||
|
list.add(dir);
|
||||||
|
String[] fileNames=dir.list(filter);
|
||||||
|
for (int i =0; i < fileNames.length;i++) {
|
||||||
|
File f = new File(dir,fileNames[i]);
|
||||||
|
if (f.isFile()) {
|
||||||
|
list.add(f);
|
||||||
|
}else {
|
||||||
|
getFiles(dir,list,filter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void copySingleFile(File src, File dest) throws IOException {
|
||||||
FileInputStream fileSrc = new FileInputStream(src);
|
FileInputStream fileSrc = new FileInputStream(src);
|
||||||
FileOutputStream fileDest = new FileOutputStream(dest);
|
FileOutputStream fileDest = new FileOutputStream(dest);
|
||||||
copyInputStream(fileSrc, fileDest);
|
copyInputStream(fileSrc, fileDest);
|
||||||
|
|
Loading…
Reference in New Issue