Skip to content

Instantly share code, notes, and snippets.

@sarxos
Created January 4, 2016 11:12
Show Gist options
  • Select an option

  • Save sarxos/639622f288f04c72d44b to your computer and use it in GitHub Desktop.

Select an option

Save sarxos/639622f288f04c72d44b to your computer and use it in GitHub Desktop.
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimerTask;
public class BackupTask extends TimerTask {
private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH_mm_ss");
}
};
@Override
public void run() {
try {
File src = new File("something");
File dest = new File("test-" + df.get().format(Calendar.getInstance().getTime()));
if (!dest.exists()) {
dest.mkdir();
}
copyFolder(src, dest);
throw new RuntimeException("Happy New Year!");
} catch (Exception e) {
System.out.println("Error: " + e);
}
}
public static void copyFolder(File src, File dest)
throws IOException {
if (src.isDirectory()) {
// if directory not exists, create it
if (!dest.exists()) {
dest.mkdir();
}
// list all the directory contents
String files[] = src.list();
for (String file : files) {
// construct the src and dest file structure
File srcFile = new File(src, file);
File destFile = new File(dest, file);
// recursive copy
copyFolder(srcFile, destFile);
}
} else {
// if file, then copy it
// Use bytes stream to support all file types
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dest);
byte[] buffer = new byte[1024];
int length;
// copy the file content in bytes
while ((length = in.read(buffer)) > 0) {
out.write(buffer, 0, length);
}
in.close();
out.close();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment