# Patchvorgang bricht ab.



## faustdonner (28. Feb 2012)

Ich mache ein Onlinegame und möchte eben einen automatischen Patch machen. Aber er hängt sich manchmal auf. Könnt ihr mir ne bessere Methode als diese Methode hier vorschlagen? (Ich benutze einen localhost-Server mit xampp)


```
BufferedReader reader=new BufferedReader(new FileReader(new File(win.userDir+win.trenner+"version.txt")));
				
				if(!version.equals(reader.readLine())) {
					reader.close();
					
					// Patch-Label
					System.out.println("Patchvorgang starten!");
					
					String[] patchlist=download.downloadRows(new URI("http://localhost/ef/patchlist.txt"), 3000, true);
					
					InputStream[] in=new InputStream[5000];
					
					for(int i=0;patchlist[i]!=null;i++) {
						actual=patchlist[i];
						in[i]=download.downloadFile(new URI("http://localhost/ef/patch/"+patchlist[i]), true);
					}
					for(int i=0;patchlist[i]!=null;i++) {
						OutputStream out=new FileOutputStream(new File(win.userDir+win.trenner+patchlist[i]));
						
						byte[] buffer = new byte[1024]; 
						for(int n=0;(n=in[i].read(buffer)) != -1;)
						out.write(buffer, 0, n);
						out.flush();
						out.close();
						in[i].close();
					}
					success=true;
					login.ready();
				} else {
					reader.close();
					System.out.println("Spielversion ist aktuell!");
					success=true;
					login.ready();
				}
```


----------



## nillehammer (28. Feb 2012)

Ganz allgemein würde ich da WebStart vorschlagen. Damit stellt man die (Desktop-)Anwendung auf einem Webserver bereit. Der Nutzer startet die Anwendung durch Klicken eines Links. Hinter den Kulissen vergleicht Webstart die aktuell vorhandene Version mit der bereit gestellten und lädt ggf. neuere Versionen herunter.

Und zu Deinem Code:
Warum initialisierst Du eien Array mit 5000 InputStreams? Pack doch alles in eine Schleife und instanziiere Dir genau dann den InputStream, wenn du ihn brauchst. Und beim nächsten Durchlauf eben wieder einen neuen.


----------



## Empire Phoenix (28. Feb 2012)

WEbstart ist je nach umfang nciht die idale lösung

Alternativ eine liste auf den server (automatisch generiert) packen mit dateiname und md5
Der Updater geht die liste dann der reihe nach durch und prüft mit den md5's ob es alles korrekt ist.
(ermöglicht dank der md5's dann auch einen vollcheck zu machen wenn der download fehlerhaft ist, oder dateien fehlen)


----------



## faustdonner (5. Mrz 2012)

Ich dachte eher an eine einfache Programmierlösung. Ich möchte einfach nur eine bessere Variante davon haben, die nicht abbricht.


----------

