# Java- eine Datei in einen anderen Ordner kopieren



## ClaudiJava (1. September 2011)

Hallo Java Freunde,

ich würde gerne wissen, wie ich eine Datei in einen anderen Ordner kopieren kann. Ich habe bis jetzt mit SWT eine GUI programmiert und in der Liste muss man später Dateien auswählen und diese Datei woanders hinkopieren. Diese Dateien sind nicht nur jpgs sondern auch pdf und ink und wav Dateien.

Es ist sehr dringend, da ich nicht weiss wen ich fragen kann und in Google habe ich auch nichts gefunden.... :-( Über eine Antwort würde ich mich sehr freuen.

Claudi


----------



## SE (1. September 2011)

Willkommen im Tutorials.de-Forum

Also in Java Dateien zu kopieren ist sehr einfach ...
dazu haben wir hier genug Material. Zwei Beispiel verwenden sogar Sockets *also übers Netz* und eins von Tom verwendet nI/O-Channels.

Wenn du uns ein bisschen was von deiner GUI zeigst können wir es dierekt drauf anpassen.
Was du für Daten kopieren willst ist schon wichtig da einige Streams in Java nur für Character-basierte Inhalte *also text/plain* bestimmt sind und du mit den Low-Level-Byte-Streams arbeiten musst.

Ein einfaches Consolen-Beispiel ist in 5 Minuten gebaut.


----------



## timestamp (1. September 2011)

Google: java datei kopieren
Erster Treffer:
http://www.informatik-blog.net/2009/04/20/dateien-verschieben-kopieren/

Sowohl für im selben Ordner als auch für in einen anderen Ordner.


----------



## SE (1. September 2011)

@timestamp
Dein Nick sagts eigentlich schon : SAME TIME POSTS ...

*alter wie ich es hasse ... man sollte sowas wie LOCK einführen*


----------



## ClaudiJava (1. September 2011)

Vielen dank für die schnellen Antworten******  
Also ueber Socket wäre natürlich super. Ich will nachher die ganzen Dateien einem Server übergeben. Gibt es da ein Bsp wie man Dateien in Java auswählt und den Hyperlink der MySQL Datenbank übergibt und die Datei dem Server. Ehrlich gesagt habe ich bis jetzt noch nie mit Server gearbeitet. Ich weiss nicht was für eine Art Server ich nehmen kann.... Also null Ahnung auf dem Gebiet. Wollte als erstes mal als Test eine Datei hin und herschieben...... Code habe ich leider gerade nicht da, aber das sind einfache Hyperlinks die ich auslese und diese will ich jetzt meinem Server uebergeben und den neuen Hyperlink meiner MySQL Datenbank.


----------



## SE (1. September 2011)

Ähm ... sicher das du JAVA meinst ... und nicht doch JavaScript ? *grade etwas verwirrt bin*.
Außerdem : sicher das sich der Aufwand lohnt einen Clienten und einen Server zu programmieren nur um bequem LINKS in eine Datenbank einzutragen ?
Das geht mit PHP in zwei Zeilen *etwas dirty-Code aber es geht*.
Außerdem hat es NICHTS miteinander zu tun ob du jetzt eine physische Datei *oder viel mehr deren Inhalt* auf einem Datenträger oder meinet wegen übers Netz kopierst oder ob du lediglich irgendwelche Pfade oder Links zu diesem File in eine Datenbank einträgst.

Erklär uns bitte mal genauer was du vorhast und was am Ende bei rauskommen soll bevor wir uns hier fusselig erklären.


----------



## ClaudiJava (1. September 2011)

Also es geht darum, dass der gui-user später dateien in eine gui einpflegen kann und diese auch durch gewisse suchstrings (mit sql abfrage) in einer datenbank findet.
 in dieser gui soll der user dateien einpflegen und suchen (öffnen) können.


----------



## SE (1. September 2011)

Entweder als BLOB dierekt in der Datenbank *was ich empfehlen würde* oder an einem zentral zugänglichen Ort *z.B. einem Versions-Control-Server*.

Extra eine Datenbank zu verwenden um irgendwelche Pfade oder Links darin zu speichern halte ich dann doch für "mit Kanonen auf Spatzen schießen".
Wenn schon eine Datenbank dahinter sitzt solltest du die Daten als BLOB gleich dierekt in diese einfügen was dir auch das mit den Pfaden abnimmt.


----------



## ClaudiJava (1. September 2011)

denkst du es würde keine performance probleme geben, wenn ich über tausende von daten später habe?


----------



## SE (1. September 2011)

Das war eher im Sinne von Aufwand-zu-Nutzen gemeint.
Wenn du schon eine Datenbank verwendest kannst du diese auch gleich zum Speichern der Daten selbst verwenden. Wenn du allerdings andernfalls nur Pfade / Links zu diesen Daten speichern willst würde ich dir eine andere Vorgehensweise empfehlen.


----------



## ClaudiJava (1. September 2011)

danke dir. das wäre natürlich die beste variante, aber ich solle sie nicht auf der datenbank ablegen, da es später performance probleme geben solle.  wie könnte man es implementieren, wenn man die daten nicht der datenbank gibt, sondern nur die links... wo könnte ich die daten dann ablegen?


----------



## SE (1. September 2011)

Also Interpunktion scheinst du ja zu berherschen ... und Grammatik auch ... aber ich möchte dich dann doch mal drauf hinweise das du gelegentlich Gebrauch von SHIFT machen kannst um auch Groß- und Kleinschreibung zu verwenden.

Scherz mal bei Seite ... du hast mit der Registrierung unsere Foren-Regeln akzeptiert in denen genau das drin steht ... also halte dich auch bitte daran.


Zum Problem selbst :
Wenn du jetzt die Datenbank nur als reine Linksammlung verwenden würdest müsstest du entweder mit relativen Pfaden arbeiten welche an einen absolute Pfad der dem Client bekannt ist angehängt wird *z.B. der Server-Adresse selbst* oder dierekt mit absoluten Pfade *was es dir ermöglichen würde Daten welt weit zu verteilen*.
Was du aller dings nicht durch ein ander bringen darfst : lokale Pfade auf einem Datenträger und absolute URL im Web. Es bringt ja nichts wenn du auf einem Server lokale Pfade speicherst die so auf einem anderen System nicht gegeben sind.

Dennoch wäre die Implementierung einer Server-Anwendung nur für diesen Einsatz zu aufwändig. Hier könnte Apache in Verbindung mit PHP und MySQL weitaus performantere Ergebnisse liefern. Außérdem ist bei Verwendung dieser drei Komponent alles halbwegs auf ein ander abgestimmt. Würdest du selbst eine Server-Anwendung entwickeln müsstest du ne ganze Menge testen.

Auch ist mir dein Vorhaben immer noch nicht ganz klar : was hat das auswählen in einer GUI mit einer solchen Link-Datenbank zu tun ? Ich kann es mir zwar in etwas vorstellen ... aber stehe dennoch auf dem Schlauch und bin nicht ganz sicher ob ich deine Aufgabenstellung richtig erfasst habe.


----------



## genodeftest (1. September 2011)

SPiKEe hat gesagt.:


> Hier könnte Apache in Verbindung mit PHP und MySQL weitaus performantere Ergebnisse liefern.


Kann ich mir nicht vorstellen. PHP ist fast immer langsamer als Java.


----------



## SE (1. September 2011)

Ja gut ... aber es ist mit einem WebServer und PHP deutlich einfacher effektiv 100te Anfragen gleichzeitig zu bearbeiten während Java hier schnell an seine Grenzen stößt *so fern man nicht durch spezielles Design und Änderung der Start-Parameter etwas dagegen tut*.


----------



## Johannes7146 (9. September 2011)

Also wenn ich das richtig verstehe, dann wählt User an dem Client Datei abc.wav aus und es soll folgendes geschehen:

1. Datei auf einem FileServer abgelegt.
2. In die Datenbank werden die Metadaten zu der Datei abelgen (Dateiname, Speicherort auf dem FileServer, titel, Küstler...usw)

Danach soll der User nach Dateien suchen können und diese wieder herunterladen können.

Dazu muss die Anwendung folgendes können:

3. Suche per SQL in der DB
4. Holen der Datei vom FileServer

Habe ich das ganze Richrig verstanden?
Zu welchem der 4 Punkte hast du eine Frage / Wo kommst du nicht weiter?


----------



## ClaudiJava (9. September 2011)

Hi Johannes,

du hast es genau erfasst. Das sind meine Schritte  

Ich habe eine Frage zu Punkt 4, bzw Punk 4 ist noch offen. Welchen Server kann ich da am Besten nutzen und vor Allem wie greife ich spaeter auf die Daten vom Server zu****?


----------

