Java tutorial
//package com.java2s; //License from project: Open Source License import java.io.*; public class Main { private static ThreadLocal<byte[]> buffers = new ThreadLocal<byte[]>() { @Override protected byte[] initialValue() { return new byte[4 * 1024]; } }; public static 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 = buffers.get(); int len; while ((len = in.read(buf)) > 0) { Thread.yield(); out.write(buf, 0, len); } in.close(); out.close(); } public static void copy(InputStream in, File dst) throws IOException { OutputStream out = new FileOutputStream(dst); // Transfer bytes from in to out byte[] buf = buffers.get(); int len; while ((len = in.read(buf)) > 0) { Thread.yield(); out.write(buf, 0, len); } out.close(); } }