Textdatei in JApplet einlesen

Maddin

Mitglied
Hallo,

Ich habe ein Problem mit einem JApplet, welches Bilder bzw. Textdateien aus packages der Jar-Datei verwendet. (Die Bilder werden bei Klick bzw. Maus-über-Button angezeigt und die Textdateien als Tooltip)

Das Einlesen der Bilder klappt mithilfe
Java:
	public ImageIcon getImageIcon( String fileName ) {
		try {
			return new ImageIcon( getUrl( fileName ) );
		} catch( NullPointerException e ) {
			e.printStackTrace();
			return null;
		}
	}
	public URL getUrl(String filePath) {
		URL bildUrl = getClass().getResource(filePath);
		return bildUrl;
	}
einwandfrei.

Beim Einlesen der Textdateien allerdings kann scheinbar die URL nicht aufgelöst werden (Ich hab's dabei auch mit der selben Methode wie bei den Bildern versucht - ohne Erfolg).
Im Moment verwende ich diese Methode:
Java:
public String getText(String fileName) {
		URL url = ClassLoader.getSystemResource("txts/"+fileName); //Textdateien liegen im package "txts"
		String text = "Text konnte nicht eingelesen werden"; //Sollte es nicht klappen
		try{
			bufferedReader = new BufferedReader( new InputStreamReader(url.openStream()));
			String line;
			text = "<html>"+bufferedReader.readLine(); //Kein Zeilenumbruch am Anfang
			while ((line = bufferedReader.readLine()) != null){ 
				text += "<br>"+line;
			} 
			bufferedReader.close();
		} catch(Exception e){ 
			e.printStackTrace();
		}
		return text;
	}

Da ich mit JApplets vorher nicht wirklich gearbeitet habe, kann es leicht sein, dass ich etwas Offensichtliches übersehen habe...

Google wurde schon durchstöbert, jedoch ohne Ergebnis. Für Such-Tips/Links bin ich auf alle Fälle auch dankbar.

Vielen Dank im Voraus für Hilfe,
Martin
 
Wäre hilfreich, wenn du die Exception posten würdest, die dein Code auswirft.

Ich vermute, dass du den Pfad im JAR-File mit einem Slash "/" beginnen musst.
 
Hi,

Sorry für meine späte Antwort.
Da das Ganze in Eclipse noch funktioniert bzw. auch als JFrame (auch außerhalb von Eclipse), hab ich keine explizite Exception.

Ich hab's aber auch mal so versucht, indem ich Fehlermeldungen in die getURL-Methode reingebaut habe... Dabei wurd mir angezeigt, dass die URL null ist. (Wie im ersten Post beschrieben, hab ichs mal mit einer anderen Methode als mit BufferedReader probiert)

An dem Slash lags nicht, damit klappte es weder Off- noch Online.

Gruß,
Martin
 
Okay, das wird aber etwas dauern, da der Server nicht meiner Verwaltung unterliegt.
Meld mich dann, sobald ich etwas gefunden habe bzw. die Lösung des Problems gefunden habe.
 
Nach langer, langer Zeit meld ich mich mal wieder...
Es ist scheinbar nicht möglich, auf eine Datei innerhalb einer Jar zuzugreifen.
Dies belegt auch dieser Thread (Post #2).

Ich hab's bei meinem Projekt so "gelöst", dass ich keine Textdateien mehr einlese, sondern "einfach" alles als String einschreibe...

Gruß,
Martin
 
Hi

Ich hab mir diesen Thread nicht angeschaut, warum das nicht möglich sein soll, aber:
Zumindest zum Lesen ist es 100% möglich, da ich es selber auch schon gemacht habe.

Schreiben wird komplizierter, aber laut Threadanfang reicht Lesen auch, oder?

Ich such mal ein Beispiel auf meiner Festplatte...

edit:

Java:
protected InputStream cldr(String filename)
{
	InputStream is;
	try{is=getClass().getClassLoader().getResourceAsStream(filename);}
	catch(Exception e){return null;}
	return is;
}

Gruß
 
Zuletzt bearbeitet:
Hi sheel,

Lesen würd mir absolut reichen, ja (Inzwischen ist das Projekt eh abgeschlossen, aber das Interesse, warum's nicht ging für die Zukunft wäre doch da).

Ich werd's mal mit deinem Beispiel probieren (Hab das früher schon ähnlich, aber nicht 100% gleich gemacht) und dann Bescheid geben.

Gruß,
Martin
 
Hallo,

Ich hab's jetzt endlich getestet - und es geht.

Nur versteh ich nicht, was jetzt der große Unterscheid zwischen deinem Codebeispiel und meinem ist.
Im Grunde machen sie doch das selbe, bei dir klappt's bei mir nicht.

Für Erklärungen wär ich dankbar.

Gruß,
Martin
 
Ich muss zugeben, dass ich mir noch nie überlegt habe, was da eigentlich genau passiert :-(

Hab das irgendwann in meinen Javaanfängen im Internet gefunden.
Wenn ich ein Programm geschrieben habe, mit dem ich die eigene JAR-Datei auslesen muss, hab ich die Methode einfach unverändert vom letzten Programm (das die Methde gehabt hat) reinkopiert.

Vielleicht meldet sich ja noch wer, der mehr Verständnis diesbezüglich hat.

Gruß
 
Zurück