Copy a file

From CodeCodex

Revision as of 23:43, 23 February 2007 by Billk (Talk | contribs)



    // Copies src file to dst file.
    // If the dst file does not exist, it is created
    void copy(File src, File dst) throws IOException {
        InputStream in = new FileInputStream(src);
        OutputStream out = new FileOutputStream(dst);
        // Transfer bytes from in to out
        byte[] buf = new byte[1024];
        int len;
        while ((len = > 0) {
            out.write(buf, 0, len);

Copies or moves a file without a loop. Although I'm not certain, I believe using a FileChannel allows the OS to short-circuit the operation (without actually transferring the data through Java code).


   public void move(File src, File dest, boolean move) throws Exception {

// Create channel on the source

       FileChannel srcChannel = new FileInputStream(src).getChannel();
   	// Create channel on the destination
   	FileChannel dstChannel = new FileOutputStream(dest).getChannel();
   	// Copy file contents from source to destination

dstChannel.transferFrom(srcChannel, 0, srcChannel.size());

   	// Close the channels


       if(move) src.delete();