FileCopy.java :  » Search » scriptus » net » jcdev » utils » Java Open Source

Java Open Source » Search » scriptus 
scriptus » net » jcdev » utils » FileCopy.java
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package net.jcdev.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;

public class FileCopy {

  /**
   * Copy file or directory
   * @param fromFileName Origin
   * @param toFileName Destination
   * @throws java.io.IOException
   */
  public static void copy(String fromFileName, String toFileName)
      throws IOException {
    File fromFile = new File(fromFileName);
    File toFile = new File(toFileName);

    if (!fromFile.exists()) {
      throw new IOException("FileCopy: " + "no such source file: " + fromFileName);
    }
    if (!fromFile.isFile()) {
      throw new IOException("FileCopy: " + "can't copy directory: " + fromFileName);
    }
    if (!fromFile.canRead()) {
      throw new IOException("FileCopy: " + "source file is unreadable: " + fromFileName);
    }

    if (toFile.isDirectory()) {
      toFile = new File(toFile, fromFile.getName());
    }

    if (toFile.exists()) {
      if (!toFile.canWrite()) {
        throw new IOException("FileCopy: " + "destination file is unwriteable: " + toFileName);
      }
      System.out.print("Overwrite existing file " + toFile.getName() + "? (Y/N): ");
      System.out.flush();
      BufferedReader in = new BufferedReader(new InputStreamReader(
          System.in));
      String response = in.readLine();
      if (!response.equals("Y") && !response.equals("y")) {
        throw new IOException("FileCopy: " + "existing file was not overwritten.");
      }
    } else {
      String parent = toFile.getParent();
      if (parent == null) {
        parent = System.getProperty("user.dir");
      }
      File dir = new File(parent);
      if (!dir.exists()) {
        throw new IOException("FileCopy: " + "destination directory doesn't exist: " + parent);
      }
      if (dir.isFile()) {
        throw new IOException("FileCopy: " + "destination is not a directory: " + parent);
      }
      if (!dir.canWrite()) {
        throw new IOException("FileCopy: " + "destination directory is unwriteable: " + parent);
      }
    }

    FileInputStream from = null;
    FileOutputStream to = null;
    try {
      from = new FileInputStream(fromFile);
      to = new FileOutputStream(toFile);
      byte[] buffer = new byte[4096];
      int bytesRead;

      while ((bytesRead = from.read(buffer)) != -1) {
        to.write(buffer, 0, bytesRead); // write
      }
    } finally {
      if (from != null) {
        try {
          from.close();
        } catch (IOException e) {
          ;
        }
      }
      if (to != null) {
        try {
          to.close();
        } catch (IOException e) {
          ;
        }
      }
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.