# Ordner rekursiv kopieren



## erdmulch (9. Apr 2011)

hallo zusammen,

ich will einen Ordner rekursiv kopieren...
hier unten ist mein Code! was mach ich falsch?
um es kurz zu sagen, es wird einfach gar nichts kopiert!!

danke im voraus


```
public class App {

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub
		System.out.println("Dateien und ordner werden kopiert");
		Copy c = new Copy();
		c.copyDir("C:\\quelle", "C:\\ziel");
		
	
		

	}

}
```


```
import java.io.*;

public class Copy {
    
    private BufferedInputStream in = null;
    private BufferedOutputStream out = null;
    
    public void copyDir(File quelle, File ziel) throws FileNotFoundException, IOException {
        
        File[] files = quelle.listFiles();
        ziel.mkdirs();
        for (File file : files) {
            if (file.isDirectory()) {
                copyDir(file, new File(ziel.getAbsolutePath() + System.getProperty("file.separator") + file.getName()));
            }
            else {
                copyFile(file, new File(ziel.getAbsolutePath() + System.getProperty("file.separator") + file.getName()));
            }
        }
    }
    
    public void copyFile(File file, File ziel) throws FileNotFoundException, IOException {
        
//        System.out.println("Copy " + file.getAbsolutePath() + " to " + ziel.getAbsolutePath());
        in = new BufferedInputStream(new FileInputStream(file));
        out = new BufferedOutputStream(new FileOutputStream(ziel, true));
        int bytes = 0;
        while ((bytes = in.read()) != -1) {
            out.write(bytes);
        }
        in.close();
        out.close();
    }

	public void copyDir(String quelle, String ziel) 
	{
		// TODO Auto-generated method stub
		
	}

	
	
}
```


----------



## AmunRa (9. Apr 2011)

ich reduzier mal deine Klasse Copy auf all jene Methoden die du in deiner main Funktion aufrufst. vl fällt dir dann was auf?


```
public class Copy{
   public void copyDir(String quelle, String ziel) 
    {
        // TODO Auto-generated method stub
        
    }

}
```


----------



## erdmulch (9. Apr 2011)

nein ich kappiers noch nicht!!!
was mach ich falsch?


----------



## nrg (9. Apr 2011)

ausserdem solltest du einen filechannel zum kopieren von Dateien nehmen


----------



## AmunRa (9. Apr 2011)

Du rufst die MEthode copyDir (String quelle, String ziel) auf

was schau mal in deinem Code nach was diese MEthode macht


Achtung! nicht copyDir(File,File);


----------



## erdmulch (9. Apr 2011)

ich komm immer noch nicht auf die lösung!!!


----------



## Simon_Flagg (9. Apr 2011)

du rufst die falsche methode auf
korrigiere die zeile
	
	
	
	





```
c.copyDir("C:\\quelle", "C:\\ziel");
```
 zu 
	
	
	
	





```
c.copyDir(new File("C:\\quelle"), new File("C:\\ziel"));
```
d
oder
implementiere die Methode copyDir(String, STring);

lg


----------



## Illuvatar (9. Apr 2011)

erdmulch hat gesagt.:


> ich komm immer noch nicht auf die lösung!!!


???:L
Anders gefragt: Wie viele Zeilen Code stehen in deiner Methode, die AmunRa gepostet hat - und was könnte das "TODO" bedeuten?


----------



## kirax (10. Apr 2011)

Genau aus diesem Grund predige ich immer wieder, dass man ohne IDE programmieren lernen soll.
Zu groß ist die Versuchung auf Fehler im Code einfach mit der erstbesten vorgeschlagenen Lösung zu reagieren, ohne zu verstehen, was die automatische Fehlerkorrektur da fabriziert...


----------

