copy file

Hello

How do I copy file from one directory to another

thanks ASA.

kingasaAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

expertmbCommented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
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
Cloud Class® Course: CompTIA Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

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
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Java

From novice to tech pro — start learning today.