Java - Problem bei FileWriter, in Datei schreiben

Hallo,
Ich habe ein Programm geschrieben, der die Informationen (Temperatur, Tag, Monat und Jahr) von Wetter aufnehmmen soll, und dann in einen Datei speichern, das Programm tut es, aber nicht zeilenweise, z.B. sollte die Ausgabe so aussehen:
Code:
14.12.2002 1.2
15.2.2003 12.2
16.2.2003 13.4
17.2.2003, 14.5
Bei mir wird so ausgedrückt:
Code:
14.12.2002,1.2 15.2.2003, 12.2 16.2.2003, 13.4 17.2.2003, 14.5

Ich habe am Ende des Codes die "\n" geschrieben, es funktioniert trotzdem nicht.

Hier sind die Programme:

Code:
import java.util.*;
public class WetterContainer
{
    private ArrayList meinWetter=new ArrayList();
    
    private static WetterContainer einWetterContainer=null;
    private WetterContainer()
    {
    }
    public static WetterContainer getObjektreferenz()
    {
        if(einWetterContainer==null)
            einWetterContainer=new WetterContainer();
        return einWetterContainer;
    }
    public void addMesswert(Messwert einMesswert)
    {
        meinWetter.add(einMesswert);
    }
}


Hier ist die Methode, die die Daten in dem Datei schreibt. Ist er falsch, oder gibt es eine bessere?
Code:
import java.util.*;
import java.io.*;
public class WetterSpeicher
{
    final private String DATEIPFAD="messungen.txt";
    WetterContainer einContainer = WetterContainer.getObjektreferenz();
    private ArrayList List=new ArrayList();
    public void speichereWerte(Messwert werte)
    {
        List.add(werte);
        try (FileWriter eineAusgabeDatei=new FileWriter((DATEIPFAD),true))
        {
            eineAusgabeDatei.write(werte.getTag() + "." + werte.getMonat() + "."+ werte.jahr() + ": " + werte.getTemperatur()+"\n");
        }
        catch(IOException eineAusnahme)
        {
            System.out.println("Fehler: "+eineAusnahme);
        }
    }
}

Code:
import inout.*;
class WetterUI
{
 public static void main (String args[])
 {
     double temperatur;
     int tag,monat,jahr,go=1;
     WetterSpeicher einSpeicher=new WetterSpeicher();
     while(go==1)
     {
        System.out.print("Temperatur: ");
        temperatur=Console.readDoublePoint();
        System.out.print("Tag: ");
        tag=Console.readInt();
        System.out.print("Monat: ");
        monat=Console.readInt();
        System.out.print("Jahr: ");
        jahr=Console.readInt();
        Messwert einMesswert=new Messwert(temperatur,tag,monat,jahr);
        einSpeicher.speichereWerte(einMesswert);
        System.out.print("Weiter?");
        go=Console.readInt();
     }
 }
}
 
AW: Java - Problem bei FileWriter, in Datei schreiben

Hi fcosta,

-welches Betriebssystem und mit welchem Editor schaust du dir das File an ?

-probier mal das hier :

Code:
import java.util.*;
import java.io.*;
public class WetterSpeicher
{
    final private String DATEIPFAD="messungen.txt";
    final private static String LINE_SEPARATOR = System.getProperty("line.separator");
    WetterContainer einContainer = WetterContainer.getObjektreferenz();
    private ArrayList List=new ArrayList();
    public void speichereWerte(Messwert werte)
    {
        List.add(werte);
        try (FileWriter eineAusgabeDatei=new FileWriter((DATEIPFAD),true))
        {
            eineAusgabeDatei.write(werte.getTag() + "." + werte.getMonat() + "."+ werte.jahr() + ": " + werte.getTemperatur()+LINE_SEPARATOR);
        }
        catch(IOException eineAusnahme)
        {
            System.out.println("Fehler: "+eineAusnahme);
        }
    }
}

bzw. schreib es um von "FileWriter" auf "BufferedWriter"

Gruss Uwe
 
AW: Java - Problem bei FileWriter, in Datei schreiben

Hallo,
Viellen Dank! Es hat funktioniert.

Kann man auch PrintWriter benutzen, um die Zeilenbruch zu machen?

Ich hatte andere Idee, z.B. alle Werte in der Container speichern, dann von dem Container, alle Werte in die Datei schreiben, so:

Ich habe zur WetterContainer die Methode public ArrayList gibAlleWetter() hinzugefügt:

Code:
public ArrayList gibAlleWetter()
    {
        return meinWetter;
    }

und die Wetterspeicher:

Code:
import java.util.*;
import java.io.*;
public class WetterSpeicher
{
    final private String DATEIPFAD="messungen.txt";
    WetterContainer einContainer = WetterContainer.getObjektreferenz();
    private ArrayList List=new ArrayList();
    public void speichereWerte(WetterContainer werte)
    {
        List=werte.gibAlleWetter();
        try(PrintWriter AusgabeDatei=new PrintWriter(DATEIPFAD))
        {
            for(int i=0;i<List.size();i++)
            {
                AusgabeDatei.println((Messwert)List.get(i).getTemperatur()); //Fehlermeldung
            }
        }
        catch(IOException eineAusnahme)
        {
            System.out.println("Fehlermeldung: " + eineAusnahme);
        }
    }
 }
}

Warum funktioniert (Messwert)List.get(i).getTemperatur() nicht? Ist es falsch?
 
AW: Java - Problem bei FileWriter, in Datei schreiben

Kann man auch PrintWriter benutzen, um die Zeilenbruch zu machen?

ja müsste gehen ...ohne Zeilenumbruch mit :

Code:
AusgabeDatei.print("Test");

mit Zeilenumruch :

Code:
AusgabeDatei.println("Test");


Warum funktioniert (Messwert)List.get(i).getTemperatur() nicht? Ist es falsch?

hmm sorry ich kenn mich mit Java nicht so gut aus :

aber wenn dann vlt so :

Code:
AusgabeDatei.println(List.get(i).getTemperatur());

aber ich vermute du musst per "get(i)" zuerst ein Objekt auslesen
und danach per "getTemperatur()" darauf zugreifen

Code:
AusgabeDatei.println(((ArrayList)List.get(i)).getTemperatur());

...ist aber nur "geraten" 8)

Gruss Uwe
 

Jobs

Jobmail abonieren - keine Jobs mehr verpassen:

Top