Java Programm zum Datei Upload?
Hallo! Da ich in meiner Ausbildung zum Informatikkaufmann kürzlich ein Java-Seminar hatte, in dem wir die Grundlagen von objektorientierter Programmierung gelernt haben, hat mein Ausbildungsbeauftrager in der Abteilung mir die Langzeitaufgabe gegeben, ein altes Programm was er mal geschrieben hat durch ein JAVA Programm von mir abzulösen.
Das Programm soll aus bestimmten Ordnern die Dateien an einen FTP Server schicken und dann je nach Einstellung die Datei im eigentilchen Ordner löschen oder in einen anderen Ordner "archivieren", dabei soll dann ebenfalls eine Ausgabe über Uhrzeit, Name und Status der geschickten Datei gegeben werden, welche danach in ein LogFile geschrieben wird. Ebenso soll man die ganze Konfiguration des Programms über eine Datei (z.B. .txt Datei) vornehmen können, also dass ich da die Pfade der Ordner und die Serverdaten reinschreibe.
Da wir jetzt nur die grundzüge von Java gelernt haben, also Vererbung und so, weiß ich nicht genau, wo ich da anfangen soll, da z.B. der Zugriff auf Dateien außerhalb des Java Programms neu für mich sind. Gibt es da bestimmte Bibliotheken für, die mir das erlauben? Und gibt es Bibliotheken für den Transfer an einen FTP Server?
Danke für jeden Lösungsansatz =P
(Es ist eine produktive Aufgabe, also keine Art Test, zu der ihr mir dann die Lösung verratet, ich soll sogar wortwörtlich im Internet nach der Lösung suchen, da mein Auftraggeber das selber nicht genau kann mit Java)
2 Antworten
Für einen FTP Upload/Download lohnt sich folgende die Library:
Hier gibt es auch entsprechende Beispiel für Upload und Download.
Das Programm soll aus bestimmten Ordnern die Dateien an einen FTP Server schicken
- Für die Verwendung des FTP: Siehe vorheriger Link
- Welche Ordner das Betrifft, könntest du in einer Property-Datei vermerken(*)
dann je nach Einstellung die Datei im eigentilchen Ordner löschen oder in einen anderen Ordner "archivieren"
- Diese Einstellung würde ich ebenfalls in einer Property-Datei vermerken
- Für das 'archivieren' gäbe es zwei Ansätze: 1. File#RenameTo (Verschieben). Hierüber erhält man die Info ob es "geklappt hat" oder nicht, über den boolean Rückgabewert. 2. Files.copy/delete: Hier könnte man eventuell auf Exceptions reagieren als alternative Auskunft über den Verlauf des Kopierens/Verschiebens.
eine Ausgabe über Uhrzeit, Name und Status der geschickten Datei gegeben werden, welche danach in ein LogFile geschrieben wird
Für eine Ausgabe in eine Log-Datei lohnt sich die Verwendung eines Loggers, siehe Beispiel hier:
* Property-Datei:
Über: java.util.Properties lässt sich dies sehr leicht umsetzen: Siehe Methoden:
- store
- load
Die Properties lassen sich wie eine Map verwenden. - Mein Tipp wäre es jedoch noch: Lass eine Default-Property-Datei erstellen, sollte es keine geben, oder sollte die gegebene so modifiziert sein, dass sie nicht vollständig ist.
Habe grade Erfahren, dass ich das mit SFTP machen soll, wegen Sicherheit im Firmennetz blabla, muss ich da was anderes noch beachten?
In dem Falle Bei der Apache Commons Library statt der FTPClient Klasse verwenden, sondern FTPSClient.
Wobei FTPSClient eine Ableitung von FTPClient ist, heißt für deine Implementierung, du kannst das relativ flexibel gestalten:
boolean isFTPS = ...; ... FTPClient ftpClient; if (isFTPS) { ftpClient = new FTPSClient(); } else { ftpClient = new FTPClient(); }
(Nur als Beispiel).
DH an KnusperPudding der dir eigentlich schon alles gesagt hat, dem nichts mehr hinzuzufügen ist bis auf den fertigen Quellcode.
Schätzungsweise max. 200 Codezeilen wenn du es strikt nach Objektorientierter Programmierweise umsetzt.
Dafür wirst du wenn du dir alle Bibliotheken zusammen suchen must und so fit bist und am Projekt immer arbeiten kannst aller höchstens 2-3 Wochen brauchen.
Ein begabter Programmierer würde die Aufgabe warscheinlich in 2-3 Stunden erledigen und dabei eine Kaffee Pause einlegen.
Nur gefragt: Muss es extra Java sein? Wenn das der Fall ist, schade, denn darin hab ich keine Praxis. In VB6, VB.Net, C# wäre ich bereit dir zu helfen.
Noch ergänzend:
Du kannst dir überlegen, "wie" dein Programm laufen soll:
Ansonsten hätte ich noch die "Klassiker" als Tipps: