Package kameleon.util

Source Code of kameleon.util.IOFile

/*
* Copyright (c) 2012, Fromentin Xavier, Schnell Michaël, Dervin Cyrielle, Brabant Quentin
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*      * Redistributions of source code must retain the above copyright
*       notice, this list of conditions and the following disclaimer.
*      * Redistributions in binary form must reproduce the above copyright
*       notice, this list of conditions and the following disclaimer in the
*       documentation and/or other materials provided with the distribution.
*      * The names of its contributors may not be used to endorse or promote products
*       derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Fromentin Xavier, Schnell Michaël, Dervin Cyrielle OR Brabant Quentin
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package kameleon.util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import kameleon.exception.FileReadingException;
import kameleon.exception.FileWritingException;

/**
* Utility class for copying files.
*
* @author    Schnell Michaël
* @version    1.0 
*/
public class IOFile {
 
  /**
   * Buffer size for reading.
   */
  private static final int BUFFER_SIZE = 1024 ;
 
  /**
   * Copies the content from the given source file to the given target file.
   * If the target file already exists, it is overridden.
   *
   * @param   source
   *       source file
   *      
   * @param   target
   *       target file
   *
   * @throws   FileReadingException
   *       if an error occurred while reading
   * 
   * @throws   FileWritingException
   *       if an error occurred while writing
   */
  public static void copyFile(File source, File target
      throws FileReadingException, FileWritingException {
    // Creating streams for the files
    BufferedInputStream input ;
    BufferedOutputStream output ;
    try {
      input = new BufferedInputStream(new FileInputStream(source)) ;
    } catch (FileNotFoundException e) {
      throw new FileReadingException(source) ;
    }// try
    try {
      output = new BufferedOutputStream(new FileOutputStream(target)) ;
    } catch (FileNotFoundException e) {
      throw new FileWritingException(target) ;
    }// try
   
    // Do the actual copying
    copyFile(input, output) ;
   
    // Closing the streams
    try {
      output.close() ;
    } catch (IOException e) {
      throw new FileWritingException(source) ;
    }// try
    try {
      input.close() ;
    } catch (IOException e) {
      throw new FileReadingException(source) ;
    }// try
  }// copyFile(File, File)
 
  /**
   * Reads all the bytes read from the given {@code InputStream} and
   * writes them to the given {@code OuuputStream}.
   * <b>This method does not close any the given streams !</b>
  
   * @param   source
   *       source of the read bytes
   *
   * @param   destination
   *       destination for the written bytes
   *
   * @throws  FileReadingException
   *       if an error occurred while reading
   * 
   * @throws   FileWritingException
   *       if an error occurred while writing
   *      
   */
  public static void copyFile(InputStream source, OutputStream destination)
      throws FileReadingException, FileWritingException {
    final byte[] buffer = new byte[BUFFER_SIZE] ;
    int nBytes ;
    while ((nBytes = read(source, buffer)) != -1) {
      write(destination, buffer, nBytes) ;
    }// while
  }// copyFile(InputStream, String)
 
  /**
   * Reads bytes from the given {@code InputStream} and puts them into the given byte array.
   * The number of bytes read can be at most {@code buffer.length}.
   *
   * @param   source
   *       {@code InputStream} from where the byte are read
   *
   * @param   buffer
   *       target array for the bytes
   *
   * @return  Number of read bytes
   *
   * @throws   FileReadingException
   *       if an error occurred while reading the {@code InputStream}
   */
  private static final int read(InputStream source, byte[] buffer) throws FileReadingException {
    try {
      return source.read(buffer, 0, buffer.length) ;
    } catch (IOException e) {
      throw new FileReadingException() ;
    }// try
  }// read(InputStream, byte[])
 
  /**
   * Writes all the bytes from the given array into the given {@code OutputStream}.
   *
   * @param   destination
   *       target {@code OutputStream} for the written bytes
   *
   * @param   buffer
   *       source array for the bytes
   *
   * @param  nBytes
   *       the number of written bytes
   *
   * @throws   FileWritingException
   *       if an error occurred while writing
   */
  private static final void write(OutputStream destination, byte[] buffer, int nBytes) throws FileWritingException {
    try {
      destination.write(buffer, 0, nBytes) ;
    } catch (IOException e) {
      throw new FileWritingException() ;
    }// try
  }// write(OutputStream, byte[])

}// class IOFile
TOP

Related Classes of kameleon.util.IOFile

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.