Copy a file
From CodeCodex
Contents |
Implementations
These code examples demonstrate how to copy a system file.
Erlang
% copy files by name file:copy("/path/to/file", "/path/to/other/phile"). % copy files by io_device {ok, ID1} = file:open("/path/to/file", [read]). {ok, ID2} = file:open("/path/to/other/phile", [write]). file:copy(ID1, ID2). ok = file:close(ID1). ok = file:close(ID2).
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(); }
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
Tcl
file copy /path/to/file /path/to/other/phile