Как скопировать мои файлы из одного каталога в другой? - PullRequest
7 голосов
/ 07 марта 2012

Я работаю на Android.У меня есть требование, чтобы у меня был один каталог с некоторыми файлами, позже я загрузил некоторые другие файлы в другой каталог, и я собираюсь скопировать все файлы из последнего каталога в первый каталог.И прежде чем копировать файлы в первый каталог из последнего, мне нужно удалить все файлы из первого каталога.

Ответы [ 3 ]

22 голосов
/ 07 марта 2012
    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();
       }
    }

Я не могу вспомнить, где я нашел это, но это была полезная статья, которую я использовал для резервного копирования базы данных SQLite.

5 голосов
/ 08 сентября 2015

Apache FileUtils делает это очень просто и красиво ..

включает пакет Apache commons io добавляет commons-io.jar

или

зависимость от Commons-Io для Android

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

Добавить этот код

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();
        }
1 голос
/ 07 февраля 2013

Вы должны использовать также ниже код:

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...