Java Variablen in externer Datei speichern/lesen

Impulse-

Lt. Junior Grade
Registriert
Aug. 2009
Beiträge
323
Hi CB-Community,

Ich habe eine HTML-Datei (kein Server, nur auf meinem Pc), in der ein Java-Script mehrere Variablen(nur Zahlen) erzeugt. Diese sollen lokal in einer (Text)Datei gespeichert und gelesen werden können. Ich würde gerne ein Int-Array (wenn nötig mit konstanter Größe) dauerhaft abspeichern und bei Bedarf das ganze Array wieder laden können.
Ich habe erst einmal in Eclipse rumprobiert:
Code:
import java.io.*;

public class extdatei {

  public static void main (String[] args) throws IOException{
 
    int[] a = new int[20];
    for (int i=0; i < a.length; i++){
        a[i]=i;
     }
    
    //Schreiben
    BufferedWriter out = new BufferedWriter(new FileWriter("text.txt"));
    for (int i=0; i < a.length; i++){
     	String s = Integer.toString(a[i]);
    	out.write(s);
    }
    out.close();
  

    // Einlesen
    BufferedReader in = new BufferedReader(new FileReader("text.txt"));

    String zeile1 = in.readLine();
    System.out.println(zeile1);
    in.close();
  }
 }

In der text.txt stehen dann nur Sonderzeichen und der eingelesene String besteht nur aus Rechtecken :(
Gibt es in Java eine einfachere Möglichkeit, ein Zahlen-Array in einer Datei zu speichern?

Schonmal Danke für eure Hilfe!


Edit: Jetzt müsste das Schreiben und Lesen gehen aber wie trenne ich die Variablen am besten? Vielleicht jede Variable in eine neue Zeile und dann zeilenweise einlesen?
 
Zuletzt bearbeitet:
Hmmm... du köntest jedesmal ein trennzeichen einfügen (z.b. : oder so), dann kannste auch theorhetisch dauraus mit string.split (ka wie der genau hieß) ganz easy nen neues array erzeugen.
 
String.valueOf(a) musst du verwenden. Du kannst kein int direkt in ein BufferedWriter schreiben. Er nimmt zwar int an, aber in der JavaDoc steht dabei "Writes a single character". Ist also für ein Zeichencode gedacht.

Code:
        int[] a = new int[20];
        for (int i = 0; i < a.length; i++) {
            a[i] = i;
        }
        //Schreiben
        BufferedWriter out = new BufferedWriter(new FileWriter("text.txt"));
        for (int i = 0; i < a.length; i++) {
            out.write(String.valueOf(a[i]));
            out.write(';');
        }
        out.close();

        // Einlesen
        BufferedReader in = new BufferedReader(new FileReader("text.txt"));

        String zeile1 = in.readLine();
        StringTokenizer st = new StringTokenizer(zeile1, ";");
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
        in.close();

Dann halt ein StringTokenizer verwenden oder mit Zeilen arbeiten.

Mit Integer.ValueOf(String s) dann in ein array zurück schreiben (fehlt bei dem geposteten code).

Oder eben mit Serialisierung arbeiten :)
 
Am besten verwendest du Java 7 (kommt endlich mit einen schlauen File-API daher)

Dann sieht das ganze etwas so aus:

Code:
public class WriteAndReadArray {

	private Integer[] ints = {1, 2, 3};
	Path filePath = Paths.get("/Users/rhaeberli/arrayTest.txt");

	@Before
	public void writeInt() throws IOException {
		List<String> intsInStringList = new ArrayList<String>();
		for (Integer integer : ints) {
			intsInStringList.add(String.valueOf(integer));
		}
		Files.write(filePath, intsInStringList, Charset.defaultCharset());
	}

	@Test
	public void readInt() throws IOException {
		List<String> readAllLines = Files.readAllLines(filePath, Charset.defaultCharset());
		for (String string : readAllLines) {
			System.out.println("readed int: " + string);

		}
	}
}
Oder einfach wie schon erwähnt mit Serialisierung.
 
In Eclipse funktioniert jetzt alles, aber wie kriege ich es in HTML zum laufen? In den Java Scripten, die in HTML eingebunden sind werden alle Variablen als var bezeichnet und die Arrays auch bisschen anders erstellt?
Ich habe bisher nur in Eclipse gearbeitet.
 
Zuletzt bearbeitet:
Reden wir hier von Java oder JavaScript? Auch wenn sich die Namen ähneln, haben beide Sprachen gar nichts miteinander zu tun.
 
Um Java in einem Browser zum laufen zu bekommen musst du aus deinem Programm ein "Applet" machen, dass du dann in deiner HTML-Seite einbinden kannst.
 
e-Laurin schrieb:
Reden wir hier von Java oder JavaScript? Auch wenn sich die Namen ähneln, haben beide Sprachen gar nichts miteinander zu tun.

Das wusste ich nicht. Dann geht es also um JavaScript.
Wenn ich aus meinem Java-Programm ein Applet mache und es in meine HTML-Seite einbinde, kann das Applet dann mit einem JavaScript im HTML Variablen tauschen?
Oder soll ich versuchen, das Programm nach JavaScript zu übersetzen?
Danke :)
 
Zurück
Oben