# NullPointerException bei Einlesen von txt-Datei



## Riki20 (12. Sep 2006)

Hallo zusammen,

ich habe im Forum diese Beitrag gefunden. Mein Problem ist ähnlich. Nur bringt mir die Lösung dort nix. Deswegen frag ich selber noch mal, vielleicht kann mir ja jemand bei meinem Problem weiterhelfen.

Ich verwende, wie im anderen Beitrag, nun diesen Code-Schnipsel:

```
URL url = new URL(getCodeBase(), "bestenliste.txt");  //19. Zeile
			BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream()));
```

auch mit 
	
	
	
	





```
getDocumentBase()
```
funktioniert es nicht.

Im Browser bekomm ich folgende Meldung:

```
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
	at java.applet.Applet.getDocumentBase(Unknown Source)
	at Top10.makeTop10(Top10.java:19)
	at FrameForTop10.actionPerformed(FrameForTop10.java:124)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)
```

Wieso krieg ich ne NullPointerException? Ich weise dem URL doch nen relativen Link zu (muss ich absolut? wenn ja - wie?? Bei mir werden aus Slash immer Backslash und den // bei http:// reduzierts auf ein \)
bestenliste.txt liegt auch aufm Server und hat chmod 777.

Liegt es daran, dass ich ein Jar-File aus meinen Klassen erstellt hab?? 

Bitte helft mir! Weiß langsam nich mehr weiter  :cry: 

LG Riki


----------



## Riki20 (13. Sep 2006)

Kann mir niemand bei dem Problem helfen?? :-(


----------



## DP (13. Sep 2006)

wieso nimmst du nicht ein file?


----------



## Riki20 (13. Sep 2006)

hmm, hatte ich mal versucht, aber hatte nicht funktioniert, glaub ich... aber da war noch was anderes im Code anders, vielleicht funktionierts jetz ...

Wie sollte es denn dann aussehen?


```
FileReader fr = new FileReader(new File(new URL(getDocumentBase(),"bestenliste.txt")));
        BufferedReader br = new BufferedReader (fr);
```
Hab ich aus einem anderen Forum...

Wenn das richtig wäre - wieso mag es dann mein Eclipse nicht?? Er bringt mir als Fehlermeldung: 
"The constructor File(URL) is undefined" ... Muss ich noch irgendwas importieren? 
LG Riki[/code][/quote]


----------



## hupfdule (13. Sep 2006)

Riki20 hat gesagt.:
			
		

> "The constructor File(URL) is undefined" ... Muss ich noch irgendwas importieren?


http://java.sun.com/j2se/1.5.0/docs/api/java/io/File.html#File(java.net.URI)

Ein Blick in die API hilft. Du meine URI übergeben, keine URL.


----------



## Riki20 (13. Sep 2006)

...

datei = new File("bestenliste.txt");
FileReader fr = new FileReader(datei);
BufferedReader br = new BufferedReader (fr);

so akzeptiert ers mir ... nur testen kann ichs grad nich, da mein Server grade zusammengebrochen is -.- .... Wäre das so richtig?


----------



## EOB (13. Sep 2006)

hi, poste doch auch mal den relevanten code, 


gruesse


----------



## Riki20 (13. Sep 2006)

```
public  String[][] makeTop10(long laufzeit,	String newName) throws IOException
	{
		try
		{
			String[][] top10 = new String[10][2];
			
			File datei = new File("C:\\Dokumente und Einstellungen\\WEBACCOUNT\\workspace\\Puzzle\\bestenliste.txt");
			FileReader fr = new FileReader(datei);
			BufferedReader br = new BufferedReader (fr);


			
			long savedLaufzeit[] = new long[10];
			String laufzeitNewString = "";
			int counter = 9;
			int counter1 = 0;
			int irgendwas = 0;
			
			for(int i = 0; i < 10; i++)
			{
				for(int j = 0; j < 2; j++)
				{
					top10[i][j] = br.readLine();
				}
			}

			//String top10 wird hier neu belegt
			
			PrintWriter out = new PrintWriter ( 
	                new FileWriter ("bestenliste.txt") ); 
	    
	        
			for(int i = 0; i < 10; i++)
			{
				for(int j = 0; j < 2; j++)
				{
					out.println(top10[i][j]); 

				}
			}
			out.close();
			
			return top10;
		}
		catch(IOException e)
		{
			System.out.println("error " + e);
		}
		return null;
		
	}
```

Das ist die Methode, die die txt Datei aufruft


----------



## Riki20 (13. Sep 2006)

also, offline im Browser funktionierts ... Muss ich wohl warten, bis ich meinen Server wieder erreiche, um es dann auszuprobieren ... Ich hoffe einfach mal, dass es dann auch geht

Danke für eure Hilfe
LG Riki


----------



## EOB (13. Sep 2006)

was steht dann in zeile 19?

*EDIT:* ok...dann mach ma


----------



## Riki20 (13. Sep 2006)

Hallo,
ich hätte noch mal ne kleine Frage: Ich habe verschiedene Varianten versucht, u. a. diese:


```
String adresse = "https:"+"/"+"/"+"host.de"+"/"+"~name"+"/"+"Puzzle"+"/"+"bestenliste.txt";

String adresse = "https://host.de/~name/Puzzle/bestenliste.txt";

String adresse = "https:\\\\host.de\\~name\\Puzzle\\bestenliste.txt";
```


Bekomme aber jedes mal die Exception:


```
error java.io.FileNotFoundException: https:\host.de\~name\Puzzle\bestenliste.txt (Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch)
```

Ich will diesen String als Url verwenden (rufe die URL öfters auf, deshalb als Variable).


```
File datei = new File(adresse);
```

Wieso ändert mir Java "/" immer in "\" um?? Und wieso auch "\\\\" in ein einfaches "\" - müssten das dann nich zumindest "\\" sein??

Wie kann ich das umgehen??

LG Riki


----------



## EOB (13. Sep 2006)

hi, also ein file bekommt nen pfad zu einer lokalen datei! also zb _/tmp/filename.txt_. willst du uebers netz, ist url angesagt. ein beispiel:


```
try {
        // Create a URL for the desired page
        URL url = new URL("http://hostname:80/index.html");
    
        // Read all the text returned by the server
        BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
        String str;
        while ((str = in.readLine()) != null) {
            // str is one line of text; readLine() strips the newline character(s)
        }
        in.close();
    } catch (MalformedURLException e) {
    } catch (IOException e) {
    }
```

gruesse


----------



## Gast (9. Okt 2006)

Riki lern doch erstmal Java.
Das ist ja nicht zum aushalten, dieses Gemurkse.


----------

