Kopieren und Einfügen

DocR

Mitglied
Hallo,

ich wollte mal fragen ob ich in meinem Quellcode gleichzeitig die Möglichkeit habe eine Datei zu kopieren und in einem andreren Ordner einzufügen.

Momentan habe ich die Datei nur ausgelesen.

Java:
import java.io.*;

public class CopyData {
	
	/**
	 * @param args
	 */
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	
// auslesen des Ordners
		
	File dir = new File("C:/Users/Werner/Desktop/peter");
	
	File[] fileList = dir.listFiles();
	
	for(File f : fileList) {
	
	    System.out.println(f.getName());
	
	}
}

}
 
momentan lässt du dir nur die namen ausgeben 🙂

klar kannst du sie kopieren, indem du in sie liest (inputstream) und das gelesene wieder schreibst (outputstream).
 
Danke für die antworten. Ich habe jetzt das Programm dazu geschrieben nur werden die daten nicht übertragen, weiß eventuell jmd warum?

Java:
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 copyDir
{
     public static void main( String args[] )
     { 
      copyDir copy = new copyDir();
      
} 
     public void copyDir(String datei2, File ziel2)
//     public void copyDir(String quellePath, String zielPath)
     { 
     
    		File quelle = new File("C:/Users/Werner/Desktop/peter");
    		File ziel = new File("C:/Users/Werner/Desktop/hans");
    		
    		File[] Datei = quelle.listFiles();
    		
    		/*
    		   * In diesem Objekt wird für jedes File der Zielpfad gespeichert. 1. Der
    		   * alte Zielpfad 2. Das systemspezifische Pfadtrennungszeichen 3. Der Name
    		   * des aktuellen Ordners/der aktuellen Datei
    		   */
    		  File newFile = null;
    		  ziel.mkdirs(); // Erstellt alle benötigten Ordner
    		  if (quelle != null) {
                  for (int i = 0; i < Datei.length; i++) {
                    newFile = new File(ziel, Datei[i].getName());
                    if (Datei[i].isDirectory()) {
                      copyDir(Datei[i].getName(), ziel);
                    }
                    else {
                      copyDir(Datei[i].getName(), ziel);
                    }
                  }
                }
    }
     
}
 
in Zeile 35 bis 40 hast du im if und else denselben Aufruf stehen?!
copyFile() fehlt bisher, mehr als Verzeichnisse anlegen passiert nicht, schau doch nochmal im Link nach
 
ja stimmt, so natürlich, aber ich bekomme immer einen Fehler bei "copyDir" in Zeile 37

Java:
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 copyDir
{
     public static void main( String args[] )
     { 
      copyDir copy = new copyDir();
      
} 
     public void copyDir(String datei2, File ziel2)
//     public void copyDir(String quellePath, String zielPath)
     { 
     
    		File quelle = new File("C:/Users/Werner/Desktop/peter");
    		File ziel = new File("C:/Users/Werner/Desktop/hans");
    		
    		File[] Datei = quelle.listFiles();
    		
    		/*
    		   * In diesem Objekt wird für jedes File der Zielpfad gespeichert. 1. Der
    		   * alte Zielpfad 2. Das systemspezifische Pfadtrennungszeichen 3. Der Name
    		   * des aktuellen Ordners/der aktuellen Datei
    		   */
    		  File newFile = null;
    		  ziel.mkdirs(); // Erstellt alle benötigten Ordner
    		  if (quelle != null) {
                  for (int i = 0; i < Datei.length; i++) {
                    newFile = new File(ziel, Datei[i].getName());
                    
                    if (Datei[i].isDirectory()) {
                    	copyDir(Datei[i], newFile);
                    	}
                    else {
                        copyFile(Datei[i], newFile);
                   	      }
                  	    }
                  	  }
     }
                   	
                    	 
                  	public void copyFile(File file, File target) throws FileNotFoundException, IOException {
                  	 
                   	  FileChannel in = new FileInputStream(file).getChannel();
                  	  FileChannel out = new FileOutputStream(target).getChannel();
                   	  in.transferTo(0, file.length(), out);
                  	  in.close();
                  	  out.close();
                	}
}
 
und du hast keine Idee dazu, auch nicht weiter im Link das richtige Original abschauen?

die Parameter der Methode müssen File sein, nicht String,

File quelle = new File("C:/Users/Werner/Desktop/peter");
File ziel = new File("C:/Users/Werner/Desktop/hans");

gehört auch nicht in die Methode, das kommt in die main, mit diesen beiden Files dann die copyDir-Methode erstmals aufrufen
 
sind bei windows die pfad angaben nicht mit \ getrennt? normal müsste es doch so ausschauen:
File quelle = new File("C:\\Users\\Werner\\Desktop\\peter");
File ziel = new File("C:\\Users\\Werner\\Desktop\\hans");
 
Es funktioniert in Java auch [c]/[/c]. [c]\[/c] ist sowieso nur wieder eine Erfindung von Windows, darum verwende ich in Java immer [c]/[/c].
 

Neue Themen


Zurück
Oben