Copy a file

From CodeCodex

Revision as of 20:33, 9 July 2008 by Spoon! (Talk | contribs)



<HIGHLIGHTSYNTAX language="java122">

   // 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 sure, I believe using a FileChannel allows the OS to short-circuit the operation (without actually transferring the data through Java code).

<HIGHLIGHTSYNTAX language="java122">

   public void copy(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();	



<HIGHLIGHTSYNTAX language="perl"> use File::Copy;

  1. copy files by name

copy('/path/to/file', '/path/to/other/phile') or die "Copy failed: $!";

  1. copy filehandle references

copy($src, $dst) or die "Copy failed: $!"; </HIGHLIGHTSYNTAX>


<HIGHLIGHTSYNTAX language="python"> import shutil

  1. copy files by name

shutil.copyfile('/path/to/file', '/path/to/other/phile')

  1. copy file-objects

shutil.copyfileobj(src, dst) </HIGHLIGHTSYNTAX>