# Zusammenfassen von zwei Dateien (wie beim DOS-Befehl copy)



## .:AM:. (21. Nov 2006)

Hallo zusammen,

ich suche eine möglichkeit folgenden DOS-Befehl in Java performant zu lösen:

```
copy <DATEI-A> /B + <DATEI-B> /B <ZIEL-DATEI> /Y
```

Hierbei werden zwei Dateien zu einer Datei zusammengefasst.

Der Grund weshalb ich nicht einfach einen Systemaufruf machen will ist,  dass es sich um bis zu mehrerer Tausend Dateien handeln kann, die  in einer Schleife abgearbeitet werden(Ordner werden rekursiv durchgearbeitet).

Danke für jeden Tipp.

Gruß
AM


----------



## DP (21. Nov 2006)

ja alle gefundenen dateien auslesen und in ein file anfügen, feierabend


----------



## .:AM:. (21. Nov 2006)

Darauf bin ich ja auch selbst gekommen  :wink: .
Ich dachte nur, vielleicht kennt jmd eine performantere Vorgehensweise.

Trotzdem danke   .


----------



## AlArenal (21. Nov 2006)

Was sollte es denn da performanteres geben? Ist doch völlig logisch, dass wenn ich n Dateien zu einer zusammen kopieren (!) will, ich eine neue Zieldatei erzeugen jede einzelne Quelldatei öffnen, einlesen und anhängen muss.


----------



## .:AM:. (21. Nov 2006)

AlArenal hat gesagt.:
			
		

> Ist doch völlig logisch, dass wenn ich n Dateien zu einer zusammen kopieren (!) will, ich eine neue Zieldatei erzeugen jede einzelne Quelldatei öffnen, einlesen und anhängen muss.



Da hast du mich/habt ihr mich falsch verstanden. Jetzt ein bisschen detaillierter....  :wink: 

Es gibt zwei Verzeichnisse, Verzeichnis A und Verzeichnis B, in Verzeichnis A und Verzeichnis B können auch(müssen aber nicht) Unterverzeichnisse liegen.
Nun geht meine Methode in Verzeichnis A und holt sich alle Dateien aus diesem Verzeichnis und sucht in Verzeichnis B dessen Partner, daraus wird dann die neue Datei erstellt.
Diese neue Datei wird dann in das neu erstellte Verzeichnis C kopiert.

Es werden also nicht alle vorhandenen Dateien zu einer Datei zusammengefasst, sondern immer nach dem Schema:
*Datei C (Verzeichnis C) = Datei A(aus Verzeichnis A) und Datei B(aus Verzeichnis B)*
....


----------



## Leroy42a (21. Nov 2006)

```
for (File f : dirA.listFiles()) {
  File g = new File(dirB, f.name());
  if (g.exists()) {
    // f+g in C zusammenfügen
  }
}
```

sollte der Kern deiner Kopierroutine sein (Unterverzeichnisse gesondert betrachten)


----------



## .:AM:. (21. Nov 2006)

_@ Leroy42a:_ Danke für den Lösungsweg, den habe ich aber schon so weit fertig ;-).

Es ging mir explizit um den Kopiervorgang(zwei Dateien zusammenfasssen). Und zwar, ob jmd eine performantere Lösung als die von DP (die ich, wie bereits gesagt, auch verwende) kennt. 
Wie z.B. durch NIO oder anderen Libraries.


----------

