Java tutorial
//package com.java2s; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.Reader; import java.io.Writer; public class Main { private static final int DEFAULT_BUFFER_SIZE = 1024 * 4; private void copy(InputStream inputStream, File output) throws IOException { OutputStream outputStream = null; try { if (!output.exists()) { output.createNewFile(); } outputStream = new FileOutputStream(output); int read = 0; byte[] bytes = new byte[1024]; if (inputStream != null) { while ((read = inputStream.read(bytes)) != -1) { outputStream.write(bytes, 0, read); } } } finally { try { if (inputStream != null) { inputStream.close(); } } finally { if (outputStream != null) { outputStream.close(); } } } } public void copy(InputStream input, Writer output, String encoding) throws IOException { if (encoding == null) { copy(input, output); } else { InputStreamReader in = new InputStreamReader(input, encoding); copy(in, output); } } public void copy(InputStream input, Writer output) throws IOException { InputStreamReader in = new InputStreamReader(input); copy(in, output); } public static int copy(Reader input, Writer output) throws IOException { long count = copyLarge(input, output); if (count > Integer.MAX_VALUE) { return -1; } return (int) count; } public static long copyLarge(Reader input, Writer output) throws IOException { char[] buffer = new char[DEFAULT_BUFFER_SIZE]; long count = 0; int n = 0; while (-1 != (n = input.read(buffer))) { output.write(buffer, 0, n); count += n; } return count; } }