copy file

Hello

How do I copy file from one directory to another

thanks ASA.

kingasaAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
expertmbConnect With a Mentor Commented:
hi,
this will help u
                                    import java.io.*;

                                    public class CopyFile {
                                     public static void main(String args[])
                                    {
                                    String newLine = System.getProperty("line.separator");
                                    FileWriter fw = null;
                                    FileReader fr = null;
                                    BufferedReader br = null;
                                    BufferedWriter bw = null;
                                    File source = null;

                                    if (args.length < 2)
                                      System.out.println("Command Syntax: CopyFile <source>
                                    <dest>\n\n<source>\tThe source file name (path
                                    optional)\n<dest>\t\tThe destination file name (path optional)");
                                    else {
                                    try {
                                    fr = new FileReader(args[0]);
                                    fw = new FileWriter(args[1]);
                                    br = new BufferedReader(fr);
                                    bw = new BufferedWriter(fw);

                                    /* Determine the size of the buffer to allocate */
                                    source = new File(args[0]);

                                    int fileLength = (int) source.length();

                                    char charBuff[] = new char[fileLength];

                                    while (br.read(charBuff,0,fileLength) != -1)
                                    bw.write(charBuff,0,fileLength);
                                      }
                                    catch(FileNotFoundException fnfe){
                                    System.out.println(args[0] + " does not exist!");
                                    }
                                    catch(IOException ioe) {
                                    System.out.println("Error reading/writing files!");
                                    }
                                    finally {
                                    try {
                                    if (br != null)
                                    br.close();

                                    if (bw != null)
                                    bw.close();
                                    }
                                    catch(IOException ioe)
                                    {}
                                    }
                                    }
                                    }
                                     }

mb...
0
 
heyhey_Commented:
just a note: it seems to me better to use directly Input/OutputStreams and byte[], instead of Reader&Writers & char[] ...
0
 
expertmbCommented:
this is another solution

 import java.io.*;
   public class FileCopy {
   public static void copy(String source_name, String dest_name)
   throws IOException
   {
                       File source_file = new File(source_name);
                       File destination_file = new File(dest_name);
                       FileInputStream source = null;
                       FileOutputStream destination = null;
                       byte[] buffer;
                       int bytes_read;
                                         
                       try {
                         // First make sure the specified source file
                        // exists, is a file, and is readable.
                        if (!source_file.exists() || !source_file.isFile())
 throw new FileCopyException("FileCopy: no such source                            file: " +                                                source_name);
 if (!source_file.canRead())
  throw new FileCopyException("FileCopy: source file " +
                                                                    "is unreadable: " + source_name);
                                       
      // If the destination exists, make sure it is a writeable file
      // and ask before overwriting it.  If the destination doesn't
      // exist, make sure the directory exists and is writeable.
                        if (destination_file.exists()) {
                                 if (destination_file.isFile()) {
                   DataInputStream in = new               DataInputStream(System.in);
                                                        String response;
                                                         
                                                        if (!destination_file.canWrite())
                                                            throw new FileCopyException("FileCopy:
                                    destination " +
                                                                            "file is unwriteable: " + dest_name);
                                                         
                                                        System.out.print("File " + dest_name +
                                                                 " already exists.  Overwrite? (Y/N): ");
                                                        System.out.flush();
                                                        response = in.readLine();
                                                        if (!response.equals("Y") && !response.equals("y"))
                                                            throw new FileCopyException("FileCopy: copy
                                    cancelled.");
                                                    }
                                                    else
                                                        throw new FileCopyException("FileCopy: destination " 
                                                                        + "is not a file: " +  dest_name);
                                                }
                                                else {
                                                    File parentdir = parent(destination_file);
                                                    if (!parentdir.exists())
                                                        throw new FileCopyException("FileCopy: destination " 
                                                                        + "directory doesn't exist: " +
                                    dest_name);
                                                    if (!parentdir.canWrite())
                                                        throw new FileCopyException("FileCopy: destination " 
                                                                        + "directory is unwriteable: " +
                                    dest_name);
                                                }
                                                 
                                                // If we've gotten this far, then everything is okay; we can
                                                // copy the file.
                                                source = new FileInputStream(source_file);
                                                destination = new FileOutputStream(destination_file);
                                                buffer = new byte[1024];
                                                while(true) {
                                                    bytes_read = source.read(buffer);
                                                    if (bytes_read == -1) break;
                                                    destination.write(buffer, 0, bytes_read);
                                                }
                                            }
                                            // No matter what happens, always close any streams we've
                                    opened.
                                            finally {
                                                if (source != null)
                                                    try { source.close(); } catch (IOException e) { ; }
                                                if (destination != null)
                                                    try { destination.close(); } catch (IOException e) { ; }
                                            }
                                        }
                                         
                                        // File.getParent() can return null when the file is specified
                                    without
                                        // a directory or is in the root directory.  
                                        // This method handles those cases.
                                        private static File parent(File f) {
                                            String dirname = f.getParent();
                                            if (dirname == null) {
                                                if (f.isAbsolute()) return new File(File.separator);
                                                else return new File(System.getProperty("user.dir"));
                                            }
                                            return new File(dirname);
                                        }
                                         
                                        public static void main(String[] args) {
                                            if (args.length != 2)
                                                System.err.println("Usage: java FileCopy " +
                                                           "<source file> <destination file>");
                                            else {
                                                try { copy(args[0], args[1]); }
                                                catch (IOException e) {
                                    System.err.println(e.getMessage()); }
                                            }
                                        }
                                    }

                                    class FileCopyException extends IOException {
                                        public FileCopyException(String msg) { super(msg); }
                                    }

mb...
0
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

 
akkaiahCommented:
     static public void execCmd(String[] cmdParam) throws Exception {
            StringBuffer cmd = new StringBuffer();
            cmd.append(cmdParam[0]).append(" ");

            for(int i = 1; i<cmdParam.length; i++) {
                  cmd.append(cmdParam[i]).append(" ");
            }

            Process pr = Runtime.getRuntime().exec(cmd.toString());
            pr.waitFor();
            Log.logMsg("Exit Value for :" + cmd + " is " + pr.exitValue());
              }

call this method lie execCmd(" cmd.exe /c copy source destinaltion")

hope this helps..
Akkaiah





0
 
BradCoxCommented:
The first solution hangs on zero-length files. With this change it doesn't.

int len;
while ((len = br.read(charBuff,0,fileLength)) > 0)                         bw.write(charBuff,0,len);
0
 
gformanCommented:
Using the new Java IO, this becomes very fast and simple:

/** Fast & simple file copy. */
public static void copy(File source, File dest) throws IOException {
      FileChannel in = null, out = null;
      try {            
            in = new FileInputStream(source).getChannel();
            out = new FileOutputStream(dest).getChannel();

            long size = in.size();
            MappedByteBuffer buf = in.map(FileChannel.MapMode.READ_ONLY, 0, size);

            out.write(buf);

      } finally {
            if (in != null)            in.close();
            if (out != null)      out.close();
      }
}


This will even work if your files are larger than physical memory, but it may swap out a lot of pages you'd have rather kept in memory.
0
 
CyTGCommented:
gforman++;
0
 
shiva_inCommented:
MappedByteBuffer keeps the input file open even after proper closing of channel...
Here is the way to solve this..

in = new FileInputStream(source).getChannel();
out = new FileOutputStream(dest).getChannel();
in.transferTo( 0, in.size(), out);

that's it :)
0
 
gformanCommented:
shiva_in++;  shiva_in++;

Let's hear it for the power of collaboration/sharing (e.g. experts-exchange) & may the best ideas bubble to the top.
0
All Courses

From novice to tech pro — start learning today.