2017-10-29 5 views
1

Ich listet die Dateien in einem Ordner und dann muss ich sie auf einen anderen übertragen. Das Problem, das ich bekomme, ist jedoch folgendes ... Beim Versuch, sie in den anderen Ordner einzufügen, ist der Pfad wie E: \ Files, was mich dazu bringt, irgendeine Art von Datei zu erzeugen, und sie bleibt nicht so wie sie sollte. Ich habe versucht, mehrere Möglichkeiten, und noch kann es nicht tun, lasse ich meinen Code zu sehen, wenn Sie mir helfen könnenSo kopieren Sie Dateien in ein anderes Verzeichnis

Path algo = Paths.get("E:/Files/"); 
    public void Copy(String origenArchivo, Path algo) { 
       Path origenPath = Paths.get(origenArchivo); 
       String s = algo.toAbsolutePath().toString(); 
       System.out.println(s); 
       Path destinoPath = Paths.get(s); 
       System.out.println(destinoPath); 
       String x = destinoPath.toString() + "/"; 

       Path conv = Paths.get(x); 
       System.out.println(conv); 
     try { 

      Files.copy(origenPath, conv, StandardCopyOption.REPLACE_EXISTING); 
       } catch (IOException ex) { 
      Logger.getLogger(Metodos.class.getName()).log(Level.SEVERE, null, ex); 
     } 



    } 




File dir = new File("C:/Users/PC/Desktop/"); 
     public void TravelToFantasy(File dir) { 
     File listFile[] = dir.listFiles(); 
     if (listFile != null) { 
      for (int i = 0; i < listFile.length; i++) { 
       if (listFile[i].isDirectory()) { 
        Copy(listFile[i]); 
       } else { 
        System.out.println(listFile[i].getPath()); 
        System.out.println(destino); 
        this.Copy(listFile[i].getPath(), algo); 

       } 
      } 
     } 
     } 

Ich habe versucht, die „/“ auf den Weg Paths.get bringt mich zu setzen, aber es ist immer landet mir den Pfad als E: \ Dateien

Danke vier Sie!

Antwort

1

Sie können ein Verzeichnis nicht an Files.copy übergeben.

Sie brauchen nicht alle diese Konvertierung zu und von Strings. Verwenden Sie einfach Path.resolve statt:

public void copy(String origenArchivo, Path algo) 
throws IOException { 
    Path origenPath = Paths.get(origenArchivo); 
    Path conv = algo.resolve(origenPath.getFileName()); 
    Files.copy(origenPath, conv, StandardCopyOption.REPLACE_EXISTING); 
} 

Als Randbemerkung, die Pfad/Pfade/Dateien Klassen überlegen sind die java.io.File Klasse, weil sie schlägt fehl, wenn eine Operation sinnvolle Informationen liefern. Sie sollten nicht java.io.File überhaupt verwenden:

+0

Das funktioniert! Vielen Dank VGR, ich habe verstanden und alles funktioniert einwandfrei. – bukkevimli

0

Verwenden Sie java.io.File.separator anstelle von "/", dies hilft Ihrem Code, jedes Betriebssystem auszuführen.

+0

Nicht funktioniert ... ich füge das hinzu: String x = destinoPath.toString() + File.separator; aber das funktioniert nicht – bukkevimli

Verwandte Themen