Created
January 4, 2016 11:12
-
-
Save sarxos/639622f288f04c72d44b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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