# Zugriff auf eine Datei außerhalb eines JAR-Archives



## Nisl (9. Dezember 2007)

Hallo!

Ich schreibe grad an einem kleinen Spiel. In diesem Spiel würde ich gern eine Highscore verwenden, also eine Datei die ich einlesen kann und wieder neu schreiben kann. Ohne JAR-Archive ist das auch alles kein Problem.
Meine erste Idee war dann die Highscore mit in das JAR zu schreiben, da der Code dafür allerdings recht lang aussah, hab ich mir überlegt die Datei einfach außerhalb des JARs zu speichern.

Die Ordnerstruktur sieht also wie folgt aus:

```
MeinSpiel
  - Spiel.jar
  - highscore.txt
```

Die JAR-Archive Struktur sieht so aus:

```
Spiel.jar
  - META-INF
    - MANIFEST.MF
  - FileRW.class
  - FileRW.java
  - ...
```


Jetzt würde ich gern wissen, wie ich die Datei "highscore.txt" auslesen könnte. Also bräuchte ich irgendwie eine Funktion in meiner Klasse "FileRW" um eine Datei auszulesen um sie z.B. auf der Konsole auszugeben. Am besten wäre es dabei, wenn ich diese Datei Zeilenweise einlesen kann.

Zusätzlich benötige ich dann noch eine Funktion, mit der ich die Datei komplett neu schreiben kann. Wobei das Zeilenweise schreiben wieder an besten wäre.


Bisher sehen meine Funktionen so aus:

```
public String[] dateiAuslesen(String dateiname) {
	String[] sBuffer = new String[255];
	int counter = 0;
	BufferedReader inputStream = null;

	try {
		inputStream = new BufferedReader(new FileReader(dateiname));
		while (counter < 255 && (sBuffer[counter] = inputStream.readLine()) != null) {
			counter++;
		}
	}
	catch (FileNotFoundException e) {
		System.out.println("Datei nicht gefunden");
	}
	catch (IOException e) {}
	finally {
		if ( inputStream != null ) {
			try {
				inputStream.close();
			}
			catch (IOException e) {}
		}
	}
	
	return sBuffer;
}
```


```
public void dateiSchreiben(String dateiname, String[] sBuffer, int zeilen) {
	Writer outputStream = null;

	try 
	{ 
		outputStream = new FileWriter(dateiname);
		for(int i = 0; i < sBuffer.length && i < zeilen; i++) {
			outputStream.write(sBuffer[i] + "\n");
		}
	} 
	catch ( IOException e ) { 
	  System.err.println( "Konnte Datei nicht erstellen" ); 
	} 
	finally { 
		if ( outputStream != null ) {
			try { 
				outputStream.close(); 
			} 
			catch ( IOException e ) { } 
		}
	}
}
```


Ich hoffe ihr könnt mir weiter helfen.

Nisl


----------



## zeja (9. Dezember 2007)

Und wo ist jetzt dein Problem

Übergib highscore.txt an deine Funktionen und es wird funktionieren.


----------



## Nisl (9. Dezember 2007)

Joh hast recht. ;-)
Sry aber hatte so viel hin und her probiert.


----------

