# Dateizugriff Applet



## robb (2. Mrz 2007)

Hi,

ich habe ein Applet mit einer Konfig-Text-Datei aus der Konstanten herausgelesen werden sollen. 
Wenn ich diesen Dateizugriff mit einer Application teste gibt es keine Probleme bei der Darstellung der Anwendung. 

Beim Applet hingegen kriege ich ein "Applet notinited Fehler " wenn ich es versuche im Browser aufzurufen. 
Mit dem Appletviewer funktioniert es einwandfrei. Meine Frage ist nun, wie kann ich das ganze hinbekommen, dass mein Applet aus der Datei lesen kann ohne es zu signieren? Geht das über eine "einfache" Url Verbindung oder muss ich mir eine Applet Servlet kommunikation schreiben?

mfg Robb


----------



## Wildcard (2. Mrz 2007)

Hast du dir die Fehlerkonsole angesehen?
Zu dem Server auf dem das Applet liegst kannst du dich verbinden ohne das Applet zu signieren.


----------



## robb (2. Mrz 2007)

hmm, 

Also ich teste das Applet im Moment auf meinem lokalen Tomcat und selbst da weiss ich nicht, wie ich eine Fehlerkonsole bekomme....

In den Log-Dateien vom tomcat Server steht leider auch nichts drin über diesen Fehler. Wie kann ich denn am besten auf die Konfigdatei zugreifen? Ich habe es im Moment so gehalten:

```
/**
	 * Methode um die Konfigurationsdatei auszulesen
	 * und die Daten in der internen Liste zu speichern
	 */
	private void getConstants(){
		String[] str=null;
		
		
        try {
           
            File f = new File ("config.txt");
            FileReader fr = new FileReader(f);
            BufferedReader read = new BufferedReader(fr);
            String zeile = read.readLine();
            while (zeile != null) {
            	if ((zeile.charAt(0)=='-')||(zeile.charAt(0)=='/')){
            	}else{
            		int i=0;
            		StringTokenizer strtok = new StringTokenizer(zeile,",");
            		str= new String[strtok.countTokens()];
            		while (strtok.hasMoreTokens()) {
						str[i++]=strtok.nextToken();
					}
					list=list.isEmpty()?list.makeStack(str):list.insert(str);
            	}
                zeile = read.readLine();
            }
        }
        catch (FileNotFoundException e) {
            System.out.println("Datei nicht vorhanden");
        }
        catch (Exception e){
        }
	}
```
Also die gesamte Datei wird einmal ausgelesen und in einer Liste gespeichert mit Application lief es einwandfrei...

mfg Robb


----------



## Wildcard (2. Mrz 2007)

Ist natürlich Blödsinn, da ein Applet auf dem Client und nicht auf Server läuft.
new File(config.txt) würde also versuchen auf das lokale Laufwerk des clients zuzugreifen, was natürlich nicht erlaubt ist.
Du musst eine Connection zum Server aufbauen.


----------



## robb (2. Mrz 2007)

Okay, lokal krieg ichs nun hin. Nur mich wundert, dass ich es auf dem richtigen Server wo es hin soll nicht hinkriege...

```
/**
	 * Methode um die Konfigurationsdatei auszulesen
	 * und die Daten in der internen Liste zu speichern
	 */
	private void getConstants(){
		String[] str=null;
		
		
        try {
        	 URL fileURL = new URL("http://test.blub.de:8080/test.txt");
			   URLConnection conn = fileURL.openConnection();
	     	 conn.connect();
            BufferedReader read = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String zeile = read.readLine();
            while (zeile != null) {
            	if ((zeile.charAt(0)=='-')||(zeile.charAt(0)=='/')){
            	}else{
            		int i=0;
            		StringTokenizer strtok = new StringTokenizer(zeile,",");
            		str= new String[strtok.countTokens()];
            		while (strtok.hasMoreTokens()) {
						str[i++]=strtok.nextToken();
					}
					list=list.isEmpty()?list.makeStack(str):list.insert(str);
            	}
                zeile = read.readLine();
            }
        }
        catch (FileNotFoundException e) {
            System.out.println("Datei nicht vorhanden");
        }
        catch (Exception e){
        }
	}
```


----------



## Wildcard (2. Mrz 2007)

Was meinst du mit 'nicht hinkriegen'?
Übrigens:

```
catch (Exception e){
        }
```
sowas darfst du nie machen. e.printStrackTrace ist das Mindeste.


----------



## robb (2. Mrz 2007)

Naja wenn ich so versuche auf die Datei zuzugreifen wird mein Applet nicht initialisiert... Und da es auf dem lokalen Tomcat funktioniert hat, gehe ich davon aus, dass der Zugriff fehlgeschlagen ist.


----------



## Wildcard (2. Mrz 2007)

Liefert der Webserver die Datei aus? Kannst du also vom Browser aus auf die Datei zugreifen?


----------



## robb (3. Mrz 2007)

Ja, ich kann vom Browser drauf zugreifen über genau diesselbe URL.


----------



## Wildcard (3. Mrz 2007)

Und die lädst das Applet auch von dem Server auf der die Datei liegt?
Poste bitte mal die Fehlermeldung der Java-Konsole.


----------



## robb (3. Mrz 2007)

hmm, erstens bin ich nicht in der Firma um das zu überprüfen und zweitens, wie kann ich die Java Konsole sehen auf dem Server? Also ich gucke am Montag nochmal drüber, aber vielen Dank schonmal für die Hilfe.


----------



## Wildcard (3. Mrz 2007)

Nicht auf dem Server, sondern auf dem Client und die Antwort ist vom verwendeten Browser abhängig.


----------



## robb (5. Mrz 2007)

Also es war eine Nullpointer Exception die geworfen wurde, da die Textdatei nicht gefunden wurde. 
Habe es aber nun auch geschafft alles zu debuggen und es funktioniert jetzt genau so,  wie ich es haben wollte.
Danke für deine Hilfe Wildcard,

mfg Robb


----------



## korn117 (16. Mrz 2007)

hallo robb,

ich habe im moment das gleiche problem wie du - kannst du mir bitte helfen und mir einen funktionierenden beispielcode posten?

das wäre sehr nett.

vielen dank
korn


----------



## Peter Körner (16. Mrz 2007)

Hi

Der Code steht doch oben. Wichtig ist dass du als URL auch eine Datei angeibst, die der Server ausliefert. Vielleicht solltest du dich auch mal allgemein mit dem Server/Client-Konzept befassen...

Gruß, Peter


----------



## Guest (18. Mrz 2007)

hi,

danke dnake ich hab es hinbekommen, es lag an einem cacheproblem des ie - dieser wird nicht geleert, wenn man alle temp. daten löscht, sondern erst wenn der ie einmal geschlossen wird (alle ie fenster!)

und dann ging es wundersamer weise 

ich vermute ich hatte vorher auch schon mal die richtige lösung, aber der cache hatte mir einen strich durch die rechnung gemacht - trotzdem vielen dank

hab schon einige nützliche dinge hier gefunden - klasse!


----------

