|     
 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 {
 public static void main(String[] args) {
 try {
 copy("fromFile.txt", "toFile.txt");
 } catch (IOException e) {
 System.err.println(e.getMessage());
 }
 }
 
 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) {
 ;
 }
 }
 }
 }
 
 
 
 
 
 
 
 |