2012-03-07 19 views
6

Estoy trabajando en Android. Mi requisito es que tengo un directorio con algunos archivos, luego descargué algunos otros archivos en otro directorio y mi intención es copiar todos los archivos del último directorio en el primer directorio. Y antes de copiar los archivos en el primer directorio de la última, necesito eliminar todos los archivos del primer directorio.¿Cómo copiar mis archivos de un directorio a otro?

+0

bien a veces se ven para el androide doc/java o al menos usar la función "buscar" podría ser realmente útil – Blackbelt

+0

¿Ha encontrado una solución? ¿Por favor avise? – marienke

Respuesta

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

No recuerdo dónde encontré esto, pero fue a partir de un artículo útil que utilicé para hacer una copia de seguridad de una base de datos SQLite.

+0

Simplemente simple y perfecto. No sé si funcionará bien con archivos grandes, por si acaso, vamos a probarlo. – jfcogato

0

Usted tiene que usar también por debajo de código:

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

} 
+0

guardar el archivo en local con éxito –

+0

Por favor, trate de abstenerse de txtspk aquí. Una búsqueda rápida indica que ha usado "u" que significa "usted" 39 veces, y "ur" que significa "su" 25 veces. Eso es mucho trabajo de reparación que estás creando para voluntarios. – halfer

5

Apache FileUtils hace esto muy simple y muy bien ..

incluyen Apache Commons io paquete añaden Commons-io.jar

o

commons-io android gradle dependancy

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

Añadir este código

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