# Programm das Spiel startet und Spieldateien auf Fehler überprüft (ähnlich Steam)



## SteW (4. Jul 2016)

Hallo liebe Community,
Ich habe die Aufgabe ein Programm zu erstellen, welches ein ausgewähltes Spiel "A" startet. Falls dieses nicht ausgeführt werden kann, da beispielsweise eine Datei fehlt, soll ein Fenster erscheinen, in dem man auswählen kann zwischen "Beenden" wonach sich das Fenster schließt, oder "Spieldateien auf Fehler überprüfen", wonach die Dateien im Ordner des Spiels "A" mit einem vollständigen Ordner "B", der alle Dateien enthält, verglichen werden soll. Nun soll das Programm herausfinden welche Datei(en) fehlen und diese aus dem vollständigen Ordner "B" in den vollständigen Ordner "A" kopieren (ähnlich wie das Überprüfen der Spieldateien in Steam). Leider habe ich keine Idee wie ich hier am besten anfangen soll und wäre sehr über etwas Hilfe dankbar. Bin noch ein Anfänger im Programmieren, kann beispielsweise ein Fenster erstellen welches einen Button "beenden" besitzt und dies auch ausführt. Mit Array, get-set Methoden, etc. kenne ich mich bedingt aus, doch viel weiter reichen meine Kenntnisse leider nicht, muss mir also alles für dieses Programm nötigen Kenntnisse (Befehle, Methoden,...) selbst aneignen (hoffentlich mit eurer Hilfe).
Ich hoffe es findet sich jemand der mir hierbei helfen kann, 
Vielen Dank im Voraus


----------



## Kababär (4. Jul 2016)

Welches GUI Framework benutzt du denn? AWT, Swing, JavaFX?

Das Spiel existiert schon oder sollst du das Spiel auch noch schreiben?
Im Prinzip brauchst du nur:
1. Erstellen eines Ordners, in dem alle Dateien gelagert sein sollen (sind die Ordner schon da oder müssen diese noch erstellt werden?) ich würde hierfür entweder den User.home Ordner nehmen oder unter Windows AppData.
2. eine Klasse ähnlich Dictionary, in der alle Files (List<File> fileList und ggf List<File> folderList) gespeichert sind.
Für jedes File prüfen

```
for(File f: fileList){
if(!f.exist())
//Datei nicht gefunden oder eventuell //keine Leserechte
}
```
3. Klasse zum handlen des Fensters. Einfache Implementierung wäre hier ein Dialog, bei dem der Benutzer auch eine Auswahlmöglichkeit hat (Beenden, überprüfen)
4. kopieren der fehlenden Dateien mit

```
Files.copy(source.toPath(), dest.toPath());
```
Fertig?

Edit: Dialoge zu erstellen ist einfach falls du JavaFX benutzt, siehe dazu 
http://code.makery.ch/blog/javafx-dialogs-official/
Vorteil für den Anfang bei einem Dialog:
Mit einer einfachen if-Anweisung (wie gewöhnt) kannst du die Logik steuern bzw den Ablauf und musst dich nicht mit listener und dem dynamischen Laden einer zweiten FXML auseinandersetzen.
Ordner kannst du erstellen mit

```
File f = new File(deinPfad);
f.mkdir().
[code] 
Wenn du irgendwo hängst, einfach nochmal Bescheid sagen. Aber nach deinen Informationen solltest du nun die wichtigsten Methoden griffbereit haben.
```


----------



## Tobse (4. Jul 2016)

Hier mal ein paar Ansatzpunkte:

https://en.wikipedia.org/wiki/Exit_status in Verbindung mit ProcessBuilder und Process#exitValue
java.io.File, im speziellen sind hier File#getName, File#isDirectory und File#listFiles interessant
Tipp: Rekursion 

Bzgl dem Vergleichen von Dateien:
siehe java.io.File#length und java.security.MessageDigest


----------

