Home » Android » android – How to copy my files from one directory to another directory?

android – How to copy my files from one directory to another directory?

Posted by: admin June 15, 2020 Leave a comment

Questions:

I am working on Android. My requirement is that I have one directory with some files, later I downloaded some other files into another directory and my intention is to copy all the files from latest directory into first directory. And before copying the files into first directory from latest I need to remove all files from the first directory.

How to&Answers:
    void copyFile(File src, File dst) throws IOException {
       FileChannel inChannel = new FileInputStream(src).getChannel();
       FileChannel outChannel = new FileOutputStream(dst).getChannel();
       try {
          inChannel.transferTo(0, inChannel.size(), outChannel);
       } finally {
          if (inChannel != null)
             inChannel.close();
          if (outChannel != null)
             outChannel.close();
       }
    }

I can’t remember where I found this, but it was from a useful article I used to backup a SQLite database.

Answer:

Apache FileUtils does this very simple and nicely..

include Apache commons io package add commons-io.jar

or

commons-io android gradle dependancy

 compile 'commons-io:commons-io:2.4'

Add this code

String sourcePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/TongueTwister/sourceFile.3gp";
        File source = new File(sourcePath);

        String destinationPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/TongueTwister/destFile.3gp";
        File destination = new File(destinationPath);
        try 
        {
            FileUtils.copyFile(source, destination);
        } 
        catch (IOException e) 
        {
            e.printStackTrace();
        }

Answer:

You have to use also below code:

public static void copyDirectoryOneLocationToAnotherLocation(File sourceLocation, File targetLocation)
        throws IOException {

    if (sourceLocation.isDirectory()) {
        if (!targetLocation.exists()) {
            targetLocation.mkdir();
        }

        String[] children = sourceLocation.list();
        for (int i = 0; i < sourceLocation.listFiles().length; i++) {

            copyDirectoryOneLocationToAnotherLocation(new File(sourceLocation, children[i]),
                    new File(targetLocation, children[i]));
        }
    } else {

        InputStream in = new FileInputStream(sourceLocation);

        OutputStream out = new FileOutputStream(targetLocation);

        // Copy the bits from instream to outstream
        byte[] buf = new byte[1024];
        int len;
        while ((len = in.read(buf)) > 0) {
            out.write(buf, 0, len);
        }
        in.close();
        out.close();
    }

}