FileInputStream und FileOutputStream

Status
Nicht offen für weitere Antworten.

comp89

Bekanntes Mitglied
Hallo!
Hab wieder mal ein Problem beim Programmieren von TicTacToe, diesmal ist es so:

Ich soll mit einem FileInputStream oder FileReader (weiß nicht welches besser geeignet ist) vor dem Spiel die Namen der Spieler und deren Punktestand einlesen. Nach dem Spiel sollen die Namen der Spieler und deren Punktestand wieder gespeichert werden. Leider kenn ich mich bei den Streams nur sehr wenig aus und kann das Problem auch nicht alleine lösen. Kann mir wer helfen?

Code:
    public static void main(String args[]){
        setLookAndFeel();
        StringBuffer buffer = new StringBuffer();
        String[] erg = new String[12];
        try{
            FileInputStream fis = new FileInputStream(file);
            BufferedInputStream bis = new BufferedInputStream(fis);
            int in = 0;
            char inChar;
            do{
                in = bis.read();
                inChar = (char)in;
                if (in != -1){
                    buffer.append(inChar);
                }
            }while(in != -1);
            StringTokenizer tokenizer = new StringTokenizer(buffer.toString(), " ");
            in = 0;
            while (tokenizer.hasMoreTokens()){
                in++;
                erg[in] = tokenizer.nextToken();
            }
            spieler1name = erg[0];
            gespielt1 = Integer.parseInt(erg[1]);
            gewonnen1 = Integer.parseInt(erg[2]);
            lastPlayed1 = erg[3];
            spieler2name = erg[4];
            gespielt2 = Integer.parseInt(erg[5]);
            gewonnen2 = Integer.parseInt(erg[6]);
            lastPlayed2 = erg[7];
            gespieltC = Integer.parseInt(erg[9]);
            gewonnenC = Integer.parseInt(erg[10]);
            lastPlayedC = erg[11];            
        }
        catch(Exception e){
            System.err.println(e);
        // Der Compiler meldet keinen Fehler, aber beim Ausführen wird mir hier der Fehler
        // java.lang.NumberFormatException gemeldet. Woran kann das liegen?

Da der Fehler ja auch beim OutputStream liegen kann, geb ich hier auch noch den Code an:
Code:
try{
                FileOutputStream fos = new FileOutputStream(file);
                BufferedOutputStream bos = new BufferedOutputStream(fos);
                String output = spieler1name + " " + gespielt1 + " " + gewonnen1 + " " + lastPlayed1 + " " + spieler2name + " " + gespielt2 + " " + gewonnen2 + " " + lastPlayed2 + " " + computer + " " + gespieltC + " " + gewonnenC + " " + lastPlayedC;
                int out;
                for(int i=0; i<output.length(); i++){
                    out = (int)output.charAt(i);
                    bos.write(out);
                }
                bos.close();
            }
            catch(Exception e){
                JOptionPane.showMessageDialog(null, e, "ERROR", JOptionPane.ERROR_MESSAGE);
            }
            finally{
                System.exit(0);
            }

Auch da kommt kein Compilerfehler
mfg
 

meez

Top Contributor
Ich würd einen BufferedReader, und einen FileWriter nehmen:

Einlesen:
Code:
BufferedReader in = new BufferedReader(new FileReader(file));
for (String b;(b = in.readLine()) != null;buffer.append(b));


Schreiben:
Code:
FileWriter out = new FileWriter(file);
out.write(output);
out.flush();
 
B

bygones

Gast
Code:
catch(Exception e){
            System.err.println(e);
        // Der Compiler meldet keinen Fehler, aber beim Ausführen wird mir hier der Fehler
        // java.lang.NumberFormatException gemeldet. Woran kann das liegen?
schreib lieber e.printStackTrace() - dann siehst du genau wo der Fehler geschmissen wurde.
Die Exception sagt einfach dass du einen String z.b. in eine Zahl umwandeln willst, der aber keine Zahl ist !
 

comp89

Bekanntes Mitglied
@meez

Wenn ich einen BufferedReader nehmen soll, soll ich dann auch einen BufferedWriter nehmen? Wozu ist Buffered... eigentlich notwendig, könnte man nicht gleich FileReader und FileWriter verwenden?
 

meez

Top Contributor
Bufferedxxx sind gepuffte Streams, d.h. es wird jeweils eine Anzahl Zeichen (Bytes) eingelesen bis ein Abschlusszeichen kommt. Bei diesen ist das CR.
Der FileReader liest jedes Zeichen "einzeln" ein, d.h. du musst dich selber um die Zeilen kümmern.
Der BufferedReader liest vom übergebenen FileReader eine ganze Zeile ein, d.h er liest solange Zeichen ein, bis das Abschlusszeichen kommt (Zeilenumbruch).

Beim schreiben ist es egal, ob du Buffered oder nicht nimmst.
Da der BufferedWriter die ganze Zeile dem OutputStreamWriter übergibt. Der FileWriter übergibt dem OutputStreamWriter einfach jedes Zeichen "einzeln".

Du kannst das ganze natürlich auch mit dem BufferedWriter machen, bzw. PrintWriter

PrintWriter out = new PrintWriter (new BufferedWriter(new FileWriter(file)));
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
B OutputStream in FileInputStream? Java Basics - Anfänger-Themen 9
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B FileInputStream entpacken und Zeile für Zeile entpacken Java Basics - Anfänger-Themen 1
V FileInputStream - read() Java Basics - Anfänger-Themen 2
D String in FileInputStream umwandeln Java Basics - Anfänger-Themen 2
N FileInputstream und BinaryStream Java Basics - Anfänger-Themen 3
V FileInputStream auf ein swt.Image Java Basics - Anfänger-Themen 6
R FileInputStream findet Datei nicht Java Basics - Anfänger-Themen 5
C FileInputStream read() Overflow Problem Java Basics - Anfänger-Themen 6
C Datentypen Rückgabewert von "new FileInputStream" Java Basics - Anfänger-Themen 4
K FileInputStream in Jar Java Basics - Anfänger-Themen 5
megachucky FileInputStream findet nur absoluten Pfad, keinen Relativen ?! Java Basics - Anfänger-Themen 7
B FileInputStream schliessen: unreported Exception...must be caught Java Basics - Anfänger-Themen 6
W new FileInputStream() blockiert bei fifo (named pipe) Java Basics - Anfänger-Themen 2
G FileInputStream--> Zahlen aus Datei lesen Java Basics - Anfänger-Themen 7
G FileInputStream manipulieren Java Basics - Anfänger-Themen 6
B FileinputStream und BufferedInputStream Java Basics - Anfänger-Themen 12
P Fileinputstream to image? Java Basics - Anfänger-Themen 3
I FileInputStream global deklarieren Java Basics - Anfänger-Themen 2
G relativer Pfad bei FileInputStream Java Basics - Anfänger-Themen 11
T Unterschiedliche Werte beim FileInputStream Lesen Java Basics - Anfänger-Themen 2
F FileInputStream(File file) funzt net Java Basics - Anfänger-Themen 2
R FileInputStream.read() != FileReader.read(). Pls Help Java Basics - Anfänger-Themen 5
C FileInputStream sehr langsam Java Basics - Anfänger-Themen 5
Z FileInputStream bricht ab Java Basics - Anfänger-Themen 6
frau-u Probleme mit richtiger Verwendung von FileInputStream Java Basics - Anfänger-Themen 2
G FileInputStream Java Basics - Anfänger-Themen 6
W aus ObjectInputStream muß FileInputStream werden Java Basics - Anfänger-Themen 12
noah1407 Fileoutputstream Java Basics - Anfänger-Themen 4
S Datei-Speicherort von FileOutputStream Java Basics - Anfänger-Themen 4
M Fileoutputstream: Linux Dateinamen mit Umlaute Java Basics - Anfänger-Themen 4
J FileOutputStream aktuelle Speicher Pfad ausgeben Java Basics - Anfänger-Themen 13
J FileOutputStream Java Basics - Anfänger-Themen 3
J FileOutputStream write Java Basics - Anfänger-Themen 19
A fileoutputstream ändern Java Basics - Anfänger-Themen 14
Corben Input/Output FileOutputStream - neue Zeile mit write(10) Java Basics - Anfänger-Themen 6
F FileOutputStream.write Java Basics - Anfänger-Themen 2
N FileOutputStream und existenz von Datei überprüfen Java Basics - Anfänger-Themen 2
O OOP FileOutputStream überschreibt ganzen inhalt der txt Java Basics - Anfänger-Themen 4
hdi Datentypen FileOutputStream#write(int) mit ints? Java Basics - Anfänger-Themen 5
J FileOutputStream richtige Pfadangabe? Java Basics - Anfänger-Themen 8
A FileOutputStream -> byte[] (ohne File) Java Basics - Anfänger-Themen 6
G FileOutputStream generieren Java Basics - Anfänger-Themen 2
M FileOutputStream und zu große Zahlen! Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben