2016-05-02 1 views
0

Ich muss Datei von einem Ort zum anderen kopieren. Ich habe gute Lösung gefunden:Wie kopiert man Dateien in Android in einem Rutsch? Erstellen Sie keine zehn Zeilen Code! Smth wie in einer Probe

import java.io.IOException; 
import java.nio.file.Files; 
import java.nio.file.Path; 
import java.nio.file.Paths; 

public class FileCopyTest { 
public static void main(String[] args) { 
    Path source = Paths.get("/Users/apple/Desktop/test.rtf"); 
    Path destination = Paths.get("/Users/apple/Desktop/copied.rtf"); 

    try { 
     Files.copy(source, destination); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
} 

Diese Bibliothek Arbeit gut, aber in nicht verfügbar in Android ...

Ich versuche, herauszufinden, welche Art und Weise ich statt verwenden sollte, aber es irgendeinen Vorschlag. .. Ich bin mir fast sicher, dass es eine Bibliothek sein sollte, die Kopierdateien auf einmal erlaubt.

Wenn jemand weiß, bitte, ich bin sicher, es wird eine sehr hilfreiche Antwort für viele Leute sein.

Danke!

+0

Mögliche Duplikat von [Wie programmatisch verschieben, kopieren und löschen Sie Dateien und Verzeichnisse auf SD?] (Http://stackoverflow.com/questions/4178168/how-to -programmatically-move-copy-and-delete-files-and-verzeichnisses-on-sd) –

+0

Wenn Sie nur Links zu einer Bibliothek benötigen, um dies für Sie zu tun, ist dies keine geeignete Frage für Stack Overflow. –

+0

@MikeM. Ich bearbeite die Kopfzeile –

Antwort

0

Well mit commons-io Sie dieses Bild Gerade

FileInputStream source = null; 
FileOutputStream destination = null; 
try { 
    source = new FileInputStream(new File(/*...*/)); 
    destination = new FileOutputStream(new File(Environment.getExternalStorageDirectory(), /*...*/); 
    IOUtils.copy(source, destination); 
} finally { 
    IOUtils.closeQuietly(source); 
    IOUtils.closeQuietly(destination); 
} 

tun können

hinzufügen 0
compile 'org.apache.directory.studio:org.apache.commons.io:2.4' 

zum build.gradle Datei

+0

aber 'IOUtils' ist nicht in Android verfügbar ... –

+0

Was meinst du ** nicht verfügbar in Android **? Fügen Sie es Ihren build.gradle-Abhängigkeiten hinzu. Wenn Sie die verfügbaren Standard-Klassen und anscheinend KEINE Bibliothek verwenden wollen, obwohl Sie in Ihrem ursprünglichen Post behauptet haben, dann tun Sie einfach, was 'commons-io' tun würde, wenn Sie es hinzufügen würden. – EpicPandaForce

+0

ok, sorry. Stimmen Sie mit Ihnen überein –

0

versuchen diesen Code

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.nio.channels.FileChannel; 
public class CopyFile { 

public static void main(String[] args) { 
    File sourceFile = new File(
      "/Users/Neel/Documents/Workspace/file1.txt"); 

    File destFile = new File(
      "/Users/Neel/Documents/Workspace/file2.txt"); 

    /* verify whether file exist in source location */ 
    if (!sourceFile.exists()) { 
     System.out.println("Source File Not Found!"); 
    } 

    /* if file not exist then create one */ 
    if (!destFile.exists()) { 
     try { 
      destFile.createNewFile(); 

      System.out.println("Destination file doesn't exist. Creating 

    one!"); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 

    FileChannel source = null; 
    FileChannel destination = null; 

    try { 

     /** 
     * getChannel() returns unique FileChannel object associated a file 
     * output stream. 
     */ 
     source = new FileInputStream(sourceFile).getChannel(); 

     destination = new FileOutputStream(destFile).getChannel(); 

     if (destination != null && source != null) { 
      destination.transferFrom(source, 0, source.size()); 
     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    finally { 
     if (source != null) { 
      try { 
       source.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     if (destination != null) { 
      try { 
       destination.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
    } 
    } 
-1

Verwenden Sie dieses Utility-Klasse/Schreib-Datei in sdcard zu lesen:

public class MyFile { 

    String TAG = "MyFile"; 
    Context context; 
    public MyFile(Context context){ 
     this.context = context; 
    } 

    public Boolean writeToSD(String text){ 
     Boolean write_successful = false; 
     File root=null; 
      try { 
       // check for SDcard 
       root = Environment.getExternalStorageDirectory(); 
       Log.i(TAG,"path.." +root.getAbsolutePath()); 

       //check sdcard permission 
       if (root.canWrite()){ 
        File fileDir = new File(root.getAbsolutePath()); 
        fileDir.mkdirs(); 

        File file= new File(fileDir, "samplefile.txt"); 
        FileWriter filewriter = new FileWriter(file); 
        BufferedWriter out = new BufferedWriter(filewriter); 
        out.write(text); 
        out.close(); 
        write_successful = true; 
       } 
      } catch (IOException e) { 
       Log.e("ERROR:---", "Could not write file to SDCard" + e.getMessage()); 
       write_successful = false; 
      } 
     return write_successful; 
    } 

    public String readFromSD(){ 
     File sdcard = Environment.getExternalStorageDirectory(); 
     File file = new File(sdcard,"samplefile.txt"); 
     StringBuilder text = new StringBuilder(); 
     try { 
      BufferedReader br = new BufferedReader(new FileReader(file)); 
      String line; 
      while ((line = br.readLine()) != null) { 
       text.append(line); 
       text.append('\n'); 
      } 
     } 
     catch (IOException e) { 
     } 
     return text.toString(); 
    } 

    @SuppressLint("WorldReadableFiles") 
    @SuppressWarnings("static-access") 
    public Boolean writeToSandBox(String text){ 
     Boolean write_successful = false; 
     try{ 
      FileOutputStream fOut = context.openFileOutput("samplefile.txt", 
        context.MODE_WORLD_READABLE); 
      OutputStreamWriter osw = new OutputStreamWriter(fOut); 
      osw.write(text); 
      osw.flush(); 
      osw.close(); 
     }catch(Exception e){ 
      write_successful = false; 
     } 
     return write_successful; 
    } 
    public String readFromSandBox(){ 
     String str =""; 
     String new_str = ""; 
     try{ 
      FileInputStream fIn = context.openFileInput("samplefile.txt"); 
      InputStreamReader isr = new InputStreamReader(fIn); 
      BufferedReader br=new BufferedReader(isr); 

      while((str=br.readLine())!=null) 
      { 
       new_str +=str; 
       System.out.println(new_str); 
      }    
     }catch(Exception e) 
     {   
     } 
     return new_str; 
    } 
} 

Hinweis Sie diese Berechtigung in der AndroidManifest Datei geben sollte.

Hier permision

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" 

Für weitere Informationen besuchen: http://www.coderzheaven.com/2012/09/06/read-write-files-sdcard-application-sandbox-android-complete-example/

Android developer official Docs

+0

Downvote, weil 'close()' in 'try {' und nicht in 'finally {' ist. – EpicPandaForce

Verwandte Themen