# Datei Kopieren



## celloman (9. Januar 2008)

Hallo

Gibt es eine möglichkeit Dateien in ein anderes Verzeichnis zu Kopieren ohne Sie in ein Buffer geladen zu haben

MFG


----------



## zerix (9. Januar 2008)

Hallo,

ja, du kannst die Datei mit dem FileInputStream byteweise auslesen und mit dem FileOuputStream byteweise wieder schreiben.

MFG

zEriX


----------



## celloman (10. Januar 2008)

Hy.

Welches istdaher schneller beim laden, wenn ich es in InputStream lade oder mit BufferReader lade.

Welche Methode ist die bessere und schneller um Dateien zu kopieren.

MFG


----------



## zerix (10. Januar 2008)

Wenn du eine Datei schnell kopieren möchtest, solltest du dir einfach mal einen alten Thread von dir anschauen, da wurden dir von Tom und von mir insgesamt 3 Möglichkeiten gezeigt wie man eine Datei schnell kopieren kann.

MFG

zEriX


----------



## celloman (10. Januar 2008)

owe

hast du mir noch den LInk.

MFG


----------



## zerix (10. Januar 2008)

Musst du Forensuche nutzen. 

2 Dateien in eine kopieren


MFG

zEriX


----------



## celloman (10. Januar 2008)

Hy Zerix

habe die Seiete gefunden 

http://www.tutorials.de/forum/java/289028-zwei-files-eine-file-kopieren.html

aber copy(fic1, foc); wird als fehler dargestellt.

MFG


----------



## zerix (10. Januar 2008)

Und welcher Fehler?

Zur not kannst du doch eine der anderen Lösungen nehmen.

MFG

zEriX


----------



## celloman (10. Januar 2008)

der Code:



```
String as = System.getProperty( "line.separator" );
        String[] tree_Dateien = treewrl_Dateien.split("\n");
        List T = new ArrayList();
        
        for (n=0; n<tree_Dateien.length;n++){
	
        	
        	
       	 T.add(tree_Dateien[n]);
       	 
       	
        }	
        
        for (m=0; m<T.size();m++){
            
        
        FileInputStream fis1 = new FileInputStream("c:\\"+(T.get(m)));  
        FileOutputStream fos = new FileOutputStream("C:/test3.txt"); 
       
     
        copy(fis1, fos);
      
        
        fis1.close();    
        fos.close();
        
        }
        private void copy(FileChannel in, FileChannel out)throws Exception{
        	long position = 0; 
        	long transfered;  
        	long remaining = in.size();   
        	while(remaining > 0){ 
        		transfered = in.transferTo(position, remaining, out); 
        		position += transfered;
        		remaining -= transfered; 
        		} 
        	}
```


----------



## zerix (10. Januar 2008)

Hallo,

am besten schaust du dir nochmal die Beispiele von mir an. Wenn du schon ein Beispiel kopierst, solltest du auch bei einem Beispiel bleiben und nicht 2 vermischen.

MFG

zEriX


----------



## MiMi (10. Januar 2008)

@Celloman
Ist dir mal aufgefallen das du 2 verschiedene slashes benutzt


```
FileInputStream fis1 = new FileInputStream("c:\\"+(T.get(m)));  
        FileOutputStream fos = new FileOutputStream("C:/test3.txt");
```

Ich kann mir net vorstellen das das so richtig is. In den Bespielen wird uach nirgends der Backslash verwendet


----------



## celloman (10. Januar 2008)

das ist ja dein Beispiel.
bevor ich dein Beispiel verwende werden andere sachen durchgeführt.
MFG


----------



## celloman (10. Januar 2008)

habe es mit RandomAccessFile gelöst, trotzdem danke Zerix


----------



## MiMi (10. Januar 2008)

Und da smit dem vermischen, du benutzt die copy methoden aus dem ersten Beispiel und erstellt die Dateien mit FileInputStream aus dem 2. Beispiel


----------



## zerix (10. Januar 2008)

Naja, das verstehe ich jetzt nicht ganz warum du ein RandomAccessFile zum kopieren nutzt, aber egal.

Die Beispiele in dem anderen Thread, sind die schnellsten Möglichkeiten eine Datei zu kopieren.

MFG

zEriX


----------



## BLOEBAUM (11. Januar 2008)

Hallo,

wie wäre es denn mit dem DOS Befehl copy?


String sDateiAlt : Wert deine alte Datei
String sDateiNeu: Wert diene neue Datei  
String command = "cmd /C copy  \"" + sDateiAlt + "\" "
					+" \"" + sDateiNeu + "\" ";		
try {
	Process p = Runtime.getRuntime().exec(command);
    } catch (IOException e1) {
// TODO Automatisch erstellter Catch-Block e1.printStackTrace();
}


----------



## Matze (11. Januar 2008)

@BLOEBAUM
Und unter Linux?!


----------



## MiMi (11. Januar 2008)

Unter Linux kannst du doch dann die Beispiele von Zerix benutzen!


----------



## Matze (11. Januar 2008)

MiMi hat gesagt.:


> Unter Linux kannst du doch dann die Beispiele von Zerix benutzen!



War ja nur net ironische Frage, weil das keine schöne Lösung war


----------



## Tservarius (11. Januar 2008)

```
import java.io.File;
import org.apache.commons.io.FileUtils;

String dateiname = PFAD + dateiname + ".jpg";
String dateiname2 = PFAD + dateiname + ".jpg";
File theFile = new File(dateiname);
File theFile2 = new File(dateiname2);
FileUtils.copyFile(theFile2, theFile);
```

biddeschön


----------



## zerix (11. Januar 2008)

@Tservarius
Vielleicht solltest du noch erwähnen, dass du ne API von Apache verwendest, die nicht Standard ist bei Java.


MFG

zEriX


----------

