Die Methode zum schreiben einzelner Dateien ist ja:
Java:
BufferedInputStream is;
is =newBufferedInputStream(newFileInputStream(//frompfad));BufferedOutputStream os =newBufferedOutputStream(newFileOutputStream(//toPfad));while((int x = is.read())!=-1){
os.write(x);}
os.close();
is.close();
Gibts es denn auch ein Befehl um einen Ordner mit ganzem inhalt zu kopieren?
Wobei sich die Dateien die schon da sind NICHT überschreiben (wegen zeit, brauchen ja nicht neu geschrieben werden, das dauert...)
sondern einfach das mit der nächsten weitermacht??
Ich verwende in einer IOUtils Klasse von mir das hier:
Java:
/** Größe des Buffers für Kopieroperationen in byte */privatestaticfinalint BUFFER =8192;// 8 kiByte/**
* Schließt alles, was Closeable implementiert sicher mit try catch
* Solle in == null sein, so passiert nichts.
*/publicstaticvoidsafeClose(Closeable in){if(in ==null){return;}try{
in.close();}catch(Exception e){}}/**
* Kopiert File src nach dest. Löscht src nicht.
* Dest wird ohne weitere Nachfrage überschrieben.
* Sollte der Pfad zu Dest nicht komplett existieren, wird dieser erzeugt.
* @param src Quellfile
* @param dest Zielfile
* @throws FileNotFoundException Sollte src nicht existieren
*/publicstaticvoidcopyFile(File src,File dest)throwsFileNotFoundException,IOException{FileOutputStream fileout =null;FileInputStream filein =null;newFile(dest.getPath().replaceAll(dest.getName(),"")).mkdirs();try{
filein =newFileInputStream(src);
fileout =newFileOutputStream(dest);int count;byte[] data =newbyte[BUFFER];while((count = filein.read(data))!=-1){
fileout.write(data,0, count);}}finally{safeClose(fileout);safeClose(filein);}}/**
* Kopiert ein komplettes Verzeichnis und alle seine Unterverzeichnisse rekursiv
* Handelt es sich bei src um eine Datei, so wird dest auch eine Datei.
* @param src Qullverzeichnis
* @param dest Zielverzeichnis
* @throws FileNotFoundException Sollte src nicht existieren
*/publicstaticvoidcopyDir(File src,File dest)throwsFileNotFoundException,IOException{if(src.isDirectory()){File[] files = src.listFiles();if(files !=null){for(File f : files){
dest.mkdirs();// Erstelle gegebenfalls neuen Unterordner am Zielort.copyDir(f,newFile(dest.getPath()+File.separator + f.getName()));// Kopiere alles in diesem Unterordner}}}else{copyFile(src, dest);}}
Das überschreibt aber einfach alles, man müsste eben vor dem copyFile(src, dest) bestimmen, ob man dest überschreiben will oder nicht.