/* * Copyright 2000-2001,2004 The Apache Software Foundation. * * 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. */ package org.apache.jetspeed.util; import java.io.*; import java.net.URL; /* * File Copy Utilities. Some utilities that java.io doesn't give us. * * copy() - copies one file source to another file destination. * copyFromURL)() - copies from a URL source to a file destination. * * @author David S. Taylor <a href="mailto:taylor@apache.org">David Sean Taylor</a> */ public class FileCopy { public static final int BUFFER_SIZE = 4096; /* * Copies one file source to another file destination. * * @param source The source file. * @param destination The destination file. * @throws IOException When an IO error occurs, this exception is thrown. */ public static final void copy(String source, String destination) throws IOException { byte[] buffer = new byte[BUFFER_SIZE]; BufferedInputStream input; BufferedOutputStream output; input = new BufferedInputStream(new FileInputStream(source)); output = new BufferedOutputStream(new FileOutputStream(destination)); copyStream(input, output, buffer); input.close(); output.close(); } /* * Copies from a URL source to a file destination. * * @param source The source URL. * @param destination The destination file. * @throws IOException When an IO error occurs, this exception is thrown. */ public static final void copyFromURL(String source, String destination) throws IOException { byte[] buffer = new byte[BUFFER_SIZE]; URL url = new URL(source); BufferedInputStream input; BufferedOutputStream output; input = new BufferedInputStream(new DataInputStream(url.openStream())); output = new BufferedOutputStream(new FileOutputStream(destination)); copyStream(input, output, buffer); input.close(); output.close(); } /* * Generic copy from a input stream to an output stream. * * @param input The source input stream. * @param output The destination output stream. * @param buffer The user provided buffer. * @throws IOException When an IO error occurs, this exception is thrown. */ public static final void copyStream(InputStream input, OutputStream output, byte[] buffer) throws IOException { int bytesRead; while((bytesRead = input.read(buffer)) != -1) output.write(buffer, 0, bytesRead); } }