Mega Code Archive

 
Categories / Java / File Input Output
 

Copy files using Java IO API

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) {           ;         }     }   } }