Tuesday, 19 June 2012

File Copy In Java




package com.vz.ant.task;
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) {
if (args.length != 2) // Check arguments
System.err.println("Usage: java FileCopy ");
else {
try { copy(args[0], args[1]); }
catch (IOException e) { System.err.println(e.getMessage()); }
}
}

public static void copy(String from_name, String to_name) throws IOException{
File from_file = new File(from_name); // Get File objects from Strings
File to_file = new File(to_name);
if (!from_file.exists())
abort("FileCopy: no such source file: " + from_name);
if (!from_file.isFile())
abort("FileCopy: can't copy directory: " + from_name);
if (!from_file.canRead())
abort("FileCopy: source file is unreadable: " + from_name);

if (to_file.isDirectory())
to_file = new File(to_file, from_file.getName());

if (to_file.exists()) {
if (!to_file.canWrite())
abort("FileCopy: destination file is unwriteable: " + to_name);
System.out.print("Overwrite existing file " + to_name + "? (Y/N): ");
System.out.flush();
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
String response = in.readLine();
if (!response.equals("Y") && !response.equals("y"))
abort("FileCopy: existing file was not overwritten.");
}
else {
String parent = to_file.getParent(); // Get the destination directory
if (parent == null) parent = System.getProperty("user.dir"); // or CWD
File dir = new File(parent); // Convert it to a file.
if (!dir.exists())
abort("FileCopy: destination directory doesn't exist: " + parent);
if (dir.isFile())
abort("FileCopy: destination is not a directory: " + parent);
if (!dir.canWrite())
abort("FileCopy: destination directory is unwriteable: " + parent);
}

FileInputStream from = null; // Stream to read from source
FileOutputStream to = null; // Stream to write to destination
try {
from = new FileInputStream(from_file); // Create input stream
to = new FileOutputStream(to_file); // Create output stream
byte[] buffer = new byte[4096]; // A buffer to hold file contents
int bytes_read; // How many bytes in buffer
while((bytes_read = from.read(buffer)) != -1) // Read bytes until EOF
to.write(buffer, 0, bytes_read); // write bytes
}
finally {
if (from != null) try { from.close(); } catch (IOException e) { ; }
if (to != null) try { to.close(); } catch (IOException e) { ; }
}
}

private static void abort(String msg) throws IOException {
throw new IOException(msg);
}
}

No comments:

Post a Comment