Skip to main content

Backing Up A File

 Backing up a file in Java can be fairly simple and straight forward. Let's think about it for a second. You have a file.

  1. You want to be able to store a copy of that file somewhere on your file system.
  2. You either want to keep the original or delete the original.
  3. The format of the filename must be unique, so it doesn't collide with other backed up files.
There are just a few considerations to think about. Here's a solution I came up with in Java:


import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.Files;
import java.io.File;
import java.util.Date;
import java.text.SimpleDateFormat;

public class Backup {

    public static void main(String[] args) {
        if (args.length == 1) {
            File file = new File(args[0]);

            if (file.exists()) {
                try {
                    File dir = new File("archive");
                    if (!dir.exists()) {
                        dir.mkdirs();
                    }

                    Date date = new Date();
                    SimpleDateFormat dt = new SimpleDateFormat("'.'yyyy-MM-dd-HH-mm-ss");
                    Path source = Paths.get(args[0]);
                    Path target = Paths.get(dir.getName(), file.getName() + dt.format(date));

                    System.out.println("Backing up file: " + source + " --> " + target);

                    Files.copy(source, target);
                    file.delete();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            } else {
                System.err.println("The file you specified '" + file.getName() + "' doesn't exist.");
            }
        }
    }
}

As you can see I chose to delete the file at the end of the process. But let's take a look at what this does:

  1. We make sure at least one filenamne is passed in and if it exists we continue.
  2. We create a home for the archived file, in this example we call it archive.
  3. We create a date and format it.
  4. We set a source and a target and output that we are copying the source to the target.
  5. Using Files.copy we do the actual backup.
  6. Then we delete the file at the end of the process.

That's all there is to it. I'm sure there could be a way to refactor this so it's better somehow. I'll have to look into it.

Comments

Popular posts from this blog

Suicidal Ideation

 Over the years I've had to deal with suicidal ideation. Those are thoughts of being dead, some more extreme than others. It causes issues for me a lot of the time. It's not an easy thing to talk about at all. Here's what it is: Suicidal ideation ( suicidal thoughts )  are thoughts or ideas centered around death or suicide . Experiencing suicidal ideation doesn’t mean you’re going to kill yourself, but it can be a warning sign.

Ever Wonder

 Ever just sit and wonder about the things to wonder about? There are so many things that you can enjoy and think about or wonder about. It's just possible that you would be able to do such a thing. I'm not certain how it would go for you, as I am only a person. I don't know how you feel. So here we are, just waiting for something amazing to happen. It doesn't happen all the time unfortunately. It can be annoying at best.

Multidimensional Arrays

Ah Multidimensional Arrays. Nothing too crazy in JavaScript. Just a little bit of this and that. So typical arrays are fun and easy. You create them like so: var colors = new Array(); colors[0] = "Red"; colors[1] = "Yellow"; colors[2] = "Blue"; Well that's fine and dandy, but what if you want to associate something with each of those? For example, what if you wanted to create a menu? You'll need at minimum a link name and a target. We could do something like this: var colors = new Array(); colors[0] = new Array(); colors[0][0] = "red.htm"; colors[0][1] = "Red"; colors[1] = new Array(); colors[1][0] = "yellow.htm"; colors[1][1] = "Yellow"; colors[2] = new Array(); colors[2][0] = "blue.htm"; colors[2][1] = "Blue"; function createColors() { document.write('<ul id="colors">'); for (var i = 0; i < colors.length; i++) { var link = colors[i][0]; ...