Copy a file
From CodeCodex
Revision as of 18:19, 19 January 2011 by 211.2.129.92 (Talk)
Contents
Implementations
Java
// 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 = in.read(buf)) > 0) { out.write(buf, 0, len); } in.close(); out.close(); }
- Original Source: The Java Developers Almanac 1.4
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).
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 srcChannel.close(); dstChannel.close(); if(move) src.delete(); }
Perl
use File::Copy; # copy files by name copy('/path/to/file', '/path/to/other/phile') or die "Copy failed: $!"; # copy filehandle references copy($src, $dst) or die "Copy failed: $!";
Python
import shutil # copy files by name shutil.copyfile('/path/to/file', '/path/to/other/phile') # copy file-objects shutil.copyfileobj(src, dst)
Ruby
require 'fileutils' # copy files by name src = '/path/to/file' dst = '/path/to/other/phile' FileUtils.copy src, dst # copy file-objects open(src, "r") do |f1| open(dst, "w") do |f2| FileUtils.copy_stream f1, f2 end end