# Highscoreliste eines Applets funktioniert online nicht



## Dingodoodl (10. Nov 2010)

Guten Morgen,

Habe ein mehr oder weniger kleines Problem. Habe ein Spiel als java applet geschrieben, welches offline (mit oder ohne Highscore) ohne Probleme funktioniert. Wenn ich dieses Spiel jedoch in eine Website integriere läuft es nichtmehr, falls ich die Highscoreliste in das Spiel integriere. Ohne die Highscore funktioniert das Spiel einwandfrei.

Ich arbeite bei der Highscore mit einer .txt datei um die Dateien zu speichern. Habe schon einiges ausprobiert und festgestellt, dass er die Datei zwar liest(File f = new File("hs.txt")), jedoch "hängen bleibt" sobald ich das file dann benutzen will(z.B FileReader fR = new FileReader(f)).

Vielen dank schonmal für euere Hilfe 


```
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Highscore {

    String bla = "";
    String name = "";

    public Highscore(String scoring) {
        bla = scoring;

    }

    public String rw() {

        int[] score = new int[10];
        String[] names = new String[10];
        File f = new File("hs.txt");
        if (f.exists()) {
            try {

                FileReader fR = new FileReader(f);

                char[] c = new char[(int) f.length()];
                fR.read(c);
                String s = new String(c);
                String[] entrys = s.split("\n");


                for (int i = 0; i < entrys.length; i++) {
                    if (i < entrys.length - 1) {
                        names[i] = entrys[i].substring(5, 16);
                        score[i] = Integer.parseInt(entrys[i].substring(16,
                                entrys[i].length()));
                    } else {
                        names[i] = entrys[i].substring(6, 17);
                        score[i] = Integer.parseInt(entrys[i].substring(17,
                                entrys[i].length()));
                    }
                }

            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        FileWriter fw;
        String write = "";

        try {
            name = bla.substring(0, 11);
            int sc = Integer.parseInt(bla.substring(11, bla.length()));

            for (int i = 0; i < score.length; i++) {
                if (score[i] < sc) {
                    int help = score[i];
                    score[i] = sc;
                    sc = help;
                    String hel = names[i];
                    names[i] = name;
                    name = hel;
                }
                write = write + (i + 1) + ". : " + names[i] + score[i] + "\n";

            }

            fw = new FileWriter(f);
            fw.write(write);
            fw.close();
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        return write;

    }

}
```


----------



## L-ectron-X (10. Nov 2010)

Schau mal in deine Java-Konsole, da taucht bestimmt eine AccessControlException auf. Warum?

Einerseits versuchst du vom Client zu lesen, nicht von Server.
Und so, wie du das anstellst, schreibst du auf den Client, nicht auf den Server.

Auf den Client kannst du nicht schreiben und nicht von ihm lesen, weil das Applet nicht signiert ist.
Auf den Server kannst du so nicht schreiben, weil es nicht die dafür vorgesehenen Protokolle benutzt.
Du müsstest entweder FTP, PHP, RMI oder eine andere Technologie als Zwischenschicht benutzen.
FTP möchte ich dir allerdings in Verbindung mit einem Applet nicht empfehlen. Das ist ein Sicherheitsproblem.

Zum Lesen kannst du die Klasse java.util.Scanner benutzen, die liest auch per Applet ohne Exception Textdateien vom Server ein.


----------



## Dingodoodl (10. Nov 2010)

ok das bringt mich schonmal n großes stück weiter danke.. die frage ist jetzt würde es ausreichen einfach das applet selbst zu signieren ? Erscheint mir jetzt gerade als eine einfache Lösung, da ich mich weder mit php noch rmi auskenne.


----------



## L-ectron-X (10. Nov 2010)

Nein, weil du mit deiner Methode auf den Client schreiben würdest... Wäre nur interessant, wenn man sich nur mit sich selbst messen will. 
Vielleicht findest du jemand, der dir PHP-Script schreibt, dann könntest du bspw. den Highscore auch in eine Datenbank schreiben lassen.


----------



## Dingodoodl (10. Nov 2010)

ok dann such ich mal oder versuch mal selbst 
trotzdem danke


----------

