Question

In reality its just making a copy of a text.txt file. I know how to use file chooser to choose the file but that is as far as my knowledge really goes.

I can do this:

public BasicFile()
{
   JFileChooser choose = new JFileChooser(".");
   int status = choose.showOpenDialog(null);

   try
   {
        if (status != JFileChooser.APPROVE_OPTION) throw new IOException();

        f = choose.getSelectedFile();

        if (!f.exists()) throw new FileNotFoundException();
   }
   catch(FileNotFoundException e)
   {
        display(1, e.toString(), "File not found ....");
   }
   catch(IOException e)
   {
        display(1, e.toString(),  "Approve option was not selected");
   }

}
Was it helpful?

Solution

Path object is perfect for copying files,
Try this code to copy a file,

Path source = Paths.get("c:\\blabla.txt");
    Path target = Paths.get("c:\\blabla2.txt");
    try {
        Files.copy(source, target);
    } catch (IOException e1) {
        e1.printStackTrace();
    }

OTHER TIPS

If you have to backup a whole folder, you can use this code

public class BackUpFolder {

    public void copy(File sourceLocation, File targetLocation) throws IOException {
        if (sourceLocation.isDirectory()) {
            copyDirectory(sourceLocation, targetLocation);
        } else {
            copyFile(sourceLocation, targetLocation);
        }
    }

    private void copyDirectory(File source, File target) throws IOException {
        if (!target.exists()) {
            target.mkdir();
        }

        for (String f : source.list()) {
            copy(new File(source, f), new File(target, f));
        }
    }

    private void copyFile(File source, File target) throws IOException {
        try (
                InputStream in = new FileInputStream(source);
                OutputStream out = new FileOutputStream(target)) {
            byte[] buf = new byte[1024];
            int length;
            while ((length = in.read(buf)) > 0) {
                out.write(buf, 0, length);
            }
        }
    }

    public static void main(String[] args) {
        try {
            BackUpFolder backUpFolder = new BackUpFolder();
            String location = "./src/edu/abc/locationFiles/daofile"; //File path you are getting from file chooser
            String target = "./src"; //target place you want to patse
            File locFile = new File(location);
            File tarFile = new File(target);
            backUpFolder.copyDirectory(locFile, tarFile);
        } catch (IOException ex) {
            Logger.getLogger(BackUpFolder.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

Start by taking a look at Basic I/O, which explains the basics of Input/OutputStreams and Readers and Writers, which are used to read/write bytes of data from a source to a destination.

If you're using Java 7 or over, you should also take a look at Copying a File or Directory which is part of newer Files and Paths API, which you can find more information about at File I/O (Featuring NIO.2)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top