2012-03-07 19 views
6

Sto lavorando su Android. Il mio requisito è che io abbia una directory con alcuni file, poi ho scaricato altri file in un'altra directory e la mia intenzione è quella di copiare tutti i file dalla directory più recente nella prima directory. E prima di copiare i file nella prima directory dalla più recente ho bisogno di rimuovere tutti i file dalla prima directory.Come copiare i miei file da una directory a un'altra directory?

+0

bene a volte cercare l'androide java doc/o almeno usa la casella "cerca" potrebbe essere davvero molto utile – Blackbelt

+0

Hai trovato una soluzione? Si prega di avvisare? – marienke

risposta

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

Non riesco a ricordare dove ho trovato questo, ma era da un articolo utile che ho usato per il backup di un database SQLite.

+0

Semplice e perfetto. Non so se funzionerà bene con file di grandi dimensioni, per ogni evenienza, proviamo a testarlo. – jfcogato

0

Devi usare anche sotto il codice:

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

salvare il file sul locale con successo –

+0

Si prega di provare a astenersi da txtspk qui. Una rapida ricerca indica che hai usato "u" che significa "tu" 39 volte, e "ur" che significa "tuo" 25 volte. Questo è un sacco di lavori di riparazione che stai creando per i volontari. – halfer

5

Apache fileutils fa questo molto semplice e ben ..

includono Commons Apache io pacchetto aggiungono commons-io.jar

o

commons-io android gradle dipendenza

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

Aggiungere questo codice

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