Here you can find the source of copyfile(File infile, File outfile)
private static void copyfile(File infile, File outfile) throws IOException
//package com.java2s; /*//from ww w.jav a2 s .c o m * Copyright 2012 Johns Hopkins University * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.channels.FileChannel; public class Main { private static void copyfile(File infile, File outfile) throws IOException { FileChannel in = channel(infile, false); FileChannel out = channel(outfile, true); for (long offset = 0; offset < in.size();) { long n = in.transferTo(offset, in.size() - offset, out); if (n <= 0) { throw new IOException("Failed transfer to channel."); } offset += n; } out.truncate(out.position()); in.close(); out.close(); } public static FileChannel channel(File file, boolean writeable) throws IOException { String opts = writeable ? "rw" : "r"; RandomAccessFile fd = new RandomAccessFile(file, opts); FileChannel chan = fd.getChannel(); return chan; } /** * Return size of a file or size of all files contained by a directory. */ public static long size(File file) { if (file.isFile()) { return file.length(); } else { long size = 0; for (File f : file.listFiles()) { size += size(f); } return size; } } }