package org.jblooming.utilities.file;
import org.jblooming.tracer.Tracer;
import java.io.*;
/**
* Date: 4-mar-2003
* Time: 13.17.48
*
* @author Pietro Polsinelli dev@open-lab.com
*/
public class FileCopy implements Visitor {
// copying files from here.
private File sourceDir;
// copying files to here.
private File destDir;
public FileCopy(File sourceDir, File destDir) {
this.sourceDir = sourceDir;
this.destDir = destDir;
}
public void visit(Object arg) {
File sourceFile = (File) arg;
String relativeSourceFile = sourceFile.toString().substring(sourceDir.toString().length() + 1);
try {
copyFile(new File(sourceDir, relativeSourceFile), new File(destDir, relativeSourceFile));
} catch (IOException e) {
Tracer.platformLogger.error(e);
}
}
public void delete(Object arg) {
File sourceFile = (File) arg;
sourceFile.delete();
}
public static void copyFile(File src, File dest) throws IOException {
FileInputStream in = null;
FileOutputStream out = null;
try {
if (dest.isDirectory()) {
dest.mkdirs();
} else {
new File(dest.getParent()).mkdirs();
}
in = new FileInputStream(src);
out = new FileOutputStream(dest);
ByteArrayOutputStream outBuf = new ByteArrayOutputStream((int) src.length());
byte[] buffer = new byte[4096];
int count = in.read(buffer);
while (count > 0) {
outBuf.write(buffer, 0, count);
count = in.read(buffer);
}
out.write(outBuf.toByteArray());
} finally {
try {
if (in != null) in.close();
} catch (IOException e) {
Tracer.platformLogger.error(e);
}
try {
if (out != null) out.close();
} catch (IOException e) {
Tracer.platformLogger.error(e);
}
}
}
}