Mercurial > hg > blitz_condensed
diff src/org/dancres/io/FileCopier.java @ 0:3dc0c5604566
Initial checkin of blitz 2.0 fcs - no installer yet.
author | Dan Creswell <dan.creswell@gmail.com> |
---|---|
date | Sat, 21 Mar 2009 11:00:06 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/org/dancres/io/FileCopier.java Sat Mar 21 11:00:06 2009 +0000 @@ -0,0 +1,70 @@ +package org.dancres.io; + +import java.io.*; +import java.nio.channels.*; +import java.nio.*; + +public class FileCopier { + private ByteBuffer theBuffer = + ByteBuffer.allocateDirect(16 * 1024 * 1024); + + public FileCopier() { + } + + /** + Pass file name and directory to copy it to + */ + public static void main(String args[]) { + try { + File myIn = new File(args[0]); + File myOut = new File(args[1]); + + FileCopier myCopier = new FileCopier(); + + long myStart = System.currentTimeMillis(); + + myCopier.copy (myIn, myOut); + + long myEnd = System.currentTimeMillis(); + + // System.out.println("Total time: " + (myEnd - myStart)); + + } catch (Exception anE) { + anE.printStackTrace(System.err); + } + } + + public void copy(File aSource, File aDestDir) throws IOException { + FileInputStream myInFile = new FileInputStream(aSource); + + FileOutputStream myOutFile = + new FileOutputStream(new File(aDestDir, aSource.getName())); + + FileChannel myIn = myInFile.getChannel(); + FileChannel myOut = myOutFile.getChannel(); + + boolean end = false; + + while (true) { + + int myBytes = myIn.read(theBuffer); + + if (myBytes != -1) { + theBuffer.flip(); + + myOut.write(theBuffer); + + theBuffer.clear(); + } else + break; + } + + myIn.close(); + // myOut.force(false); + myOut.close(); + myInFile.close(); + myOutFile.close(); + + long myEnd = System.currentTimeMillis(); + } +}