Properties

Status
Nicht offen für weitere Antworten.
C

chrissie110

Gast
Hallöle!!

Ich habe mal ne Frage zu den Properties in Java...
Darin kann man ja Werte speichern, mit Angabe von Schlüsseln...soweit ich weiß...
nun soll es möglich sein durch diese Properties Werte hintereinander abzuspeichern, ohne zu überschreiben...
Genauer: Nach jedem Aufruf des Java-Programms wird diese Variable neu generiert (im Minuten - Takt), jeder Wert dieser Variable soll hintereinander in der Properties Datei gespeichert werden... nachdem 60 Werte gespeichert wurden soll damit gerechnet werden, danach sollen die Einträge wieder gelöscht werden aus der Liste und es soll von vorn los gehen...
Ich habe wirklich keine Ahnung wie ich dies umsetzen könnte...wäre super wenn jemand eine Idee hätte... mit Sourcecode wäre schön...

Vielen Dank schonmal...

MfG Chrissie
 

gustav

Aktives Mitglied
Was willst Du denn genau machen ? Denn ich denke nicht, das das Property Konzept für solche Sachen gedacht ist. Es stellt vielmehr eine einfach zu handhabende Datenbasis für verschiedene Programmwerte dar. Wie wäre es z.B. mit einem einem einfachen Feld ?

Ausführlich :
Code:
int Feld[] = new int[60] ;
int counter = 0 ;

public final void setWert(int wert)
{
  index = counter % 60 ;
  counter++ ;
  Feld[index] = wert ;
}
 
C

chrissie110

Gast
Hallo!!

Erstmal danke für die schnelle Antwort!!

Hier läuft eine Wetterstation, die für jede Minute die aktuelle Temperatur liefert.
Mit einem Java - Programm soll ich die Minutenwerte in einer Datei speichern, und zwar so lange bis eine Stunde voll ist. Dann soll der Stundenmittelwert errechnet werden. Danach sollen alle Werte wieder aus der Datei gelöscht werden und es werden wieder neue Werte gespeichert, bis ans Ende der nächsten Stunde...

Die Methode dafür sieht bis jetzt folgendermaßen aus:

Code:
private void calcAirTemperature(String inputStr)  {  // Lufttemperatur
  	
  	if (inputStr != null)  // falls fehlerhafter Aufruf 
     { 
      int anf2 = inputStr.indexOf("T0");        
      if (anf2 != -1) 
       { 
         System.out.println (" Lufttemperatur:"); 
         System.out.println (" "); 
         System.out.println (" "); 
       
         inputStr = inputStr.substring(inputStr.indexOf("T0"));
             
         for (int j = 0; j<inputStr.length(); j++) 
           { 
             inputStr = inputStr.replaceAll("  "," "); 
           } 
            
             String[] a = inputStr.split(" "); 
        
              System.out.println(" stuendlicher Mittelwert ???");
            double b2 = Double.parseDouble (a[4]);
            double t2 = b2/10;
              System.out.println(" Maximalwert letzte Stunde: " + t2 + " Grad Celsius");
            double b3 = Double.parseDouble (a[5]);
            double t3 = b3/10;
              System.out.println(" Minimalwert letzte Stunde: " + t3 + " Grad Celsius");
            double b4 = Double.parseDouble (a[1]);
            double t4 = b4/10;
              System.out.println(" Aktueller Wert: " + t4 + " Grad Celsius");
            double b5 = Double.parseDouble (a[2]);
            double t5 = b5/10;
              System.out.println(" 10 - Minuten - Maximalwert: " + t5 + " Grad Celsius");
            double b6 = Double.parseDouble (a[3]);
            double t6 = b6/10;
              System.out.println(" 10 - Minuten - Minimalwert: " + t6 + " Grad Celsius");
              System.out.println(" ");
          }
        }
     }
 
C

chrissie110

Gast
Die Datei, die ich anlegen möchte, hat kein spezielles Format...
 

marsias

Aktives Mitglied
Hi!

Wenn das Programm die ganze Zeit läuft brauchst du keine datei...oder?
die werte bleiben im speicher....nach einer minute errechnest du deine sachen
daraus und dann löscht du sie..und fängst wieder von vorne an.

Wenn du das errechnete ergebnis speichern musst dann musst du das natürlich in einer
datei machen. Properties sind nicht dazu gedacht.
mfg
 
C

chrissie110

Gast
Das Programm läuft ja nicht die ganze Zeit, sondern wird jede Minute neu compiliert, damit die neuen Daten erfaßt werden...
Deshalb muss ich die Werte, denke ich, in einer externen Datei speichern... weil ja ansonsten immer wieder der jeweilige Wert durch den nächsten überschrieben wird, bei jedem Programmstart...
 

gustav

Aktives Mitglied
Mmmhhh,
kannst Du mal bitte Deine genaue Vorgehensweise schildern ! Warum startest Du das Prog. jede Minute neu, kann das nicht auch in einer Schleife laufen oder per Zeitabfrage genau jede Minute einmal aufgeweckt werden ? Wenn das geht, ist es auf jeden Fall zu bevorzugen !!!!


Falls die Option nicht geht und Deine Datei kein bestimmtes Format hat bzw. keine Interaktionen mit anderen Programmen bestehen die auf diese Datei zugreifen, dann kannst Du ganz einfach das Serializable Interface benutzen. D.h. hiermit kann Dein gesamtes Objekt auf einmal abgespeichert werden und beim nächsten Programmstart lädst Du dieses einfach wieder. Für das Objekt macht es keinen Unterschied. Hierbei bietet sich dann das Abspeichern der Daten in einem Feld an. Zusätzlich verlierst Du auch keine anderen Informationen.

Code:
public class XYKlasse implements java.io.Serializable
{
  ......
}
Im Hauptprogramm (bzw. Hauptobjekt) brauchst Du diese Methoden

Code:
private final void saveIt(String FileName)
  {
    /* in Datei speichern */
      if ((FileName == null) || (FileName.length() == 0))
         FileName = "default.bak" ;

      try
      {
        FileOutputStream o = new FileOutputStream(FileName) ;
        ObjectOutputStream oo = new ObjectOutputStream(o) ;
        oo.writeObject( InstaceOfXYKlasse ) ;
        oo.flush() ;
        oo.close() ;
      }
      catch (Exception e) {}
  }

private final XYKlasse loadIt(String fileName)
{
    XYKlasse back = null ;
    try
    {
      FileInputStream i = new FileInputStream( fileName) ;
      ObjectInputStream oi = new ObjectInputStream( i) ;
      back = (XYKlasse) oi.readObject() ;
    }
    catch (Exception e)
    {
      System.out.println("\n !!! Load error !!!\n") ;
      System.out.println(e.getMessage());
    }
   return back ;
}

Ich hoffe das haut jetzt so ungefähr hin, hab grad nichts zum testen in der Nähe....
 
C

chrissie110

Gast
Hmmmm...
ich glaube ich erkläre das hier viel zu kompliziert...
Aaaalso: Die Datenfiles gelangen permanent durch einen ComClient auf meinen Rechner... Dieser fragt die Daten genauer gesagt jede Minute ab.
So sieht z.B. ein File aus:

EPSA 28.10.03 12:14 28.10.03 13:14
D0 00211 00229 00215
V0 00005 00006 00005 00006 00007 00007 00004 00012 00014 00015 00015
T0 +0078 +0077 +0076 +0072 +0065 +0008 -0021 -0012
F0 00060
S0 00010 00001 00001 00010 00091
G0 02392 02376 02296 02303 02310
R0 00000 00000 00000 00000 00000 00000 00000 00000
M0 00000 00000 00000 00000 00000 00000 00000
T1 +0070 +0107 +0072 +0108 +0060 +0000 -0039
ENDE


Hierbei ist T0 z.B. die Bezeichnung für den Temperatursensor, V0 für die Windgeschwindigkeit usw...
Die Werte in den jeweiligen Zeilen (z.B. bei T0) geben dann den jeweils aktuellen Wert an(= Minutenwert), sowie auch stündlich Maximal - und Minimalwerte.
Durch mein Java- Programm werden aus den Zeilen die einzelnen Werte heraus gefiltert, wenns sein muss umgerechnet... ich muss lediglich realisieren das die ankommenden Datenfiles das Java-Programm durchlaufen, bevor sie dann in der Datenbank abgelegt werden. Ich möchte in der Datenbank jeweils stündliche Durchschnitts- Maximal- und Minimalwerte ablegen. Fast jeder Sensor liefert mir diese Werte bereits, d.h. die Wetterstation ist in der Lage diese Werte selbst zu berechnen. Nur einen stündlichen Durchschnittswert für die Temperatur kriege ich eben nicht
und muss mir diesen eben erst aus den aktuellen Werten berechnen, damit ich diesen dann später in der Datenbank ablegen kann. Mein Problem ist das ich nicht weiß wie ich diesen am Einfachsten berechne...
 

gustav

Aktives Mitglied
Ja also, da würd ich das Prog nicht jedesmal selbst starten ! Bau Dir zum Bsp einen Thread und wecke diesen pro Minute einmal auf oder wenn Du die Daten bekommst. Dann kannst Du die Daten in ein Feld Schreiben :
Code:
int Feld[] = new int[60] ;
int counter = 0 ;

public final void setWert(int wert)
{
  index = counter % 60 ;
  counter++ ;
  Feld[index] = wert ;
}
Falls der Counter einen Schwellwert überschritten hat, kannst Du dann die Mittelung anstoßen.
 

Nobody

Top Contributor
wenn es exakt werden soll empfiehlt es sich die zeit, die das programm braucht zu bestimmen und nur noch die übrige zeit warten lassen und dafür emüpfiehlt sich:
Code:
try {
  Thread.sleep(zeit); 
}
catch (InterruptedException e) { } //während des wartens können fehler auftreten die keine behandlung benötigen er muss aber das try catch teil haben um nicht abzuschmieren
 
C

chrissie110

Gast
Das mit dem Thread habe ich gemacht, klappt super. Das Programm wird nun jede Minute neu gestartet.
Allerdings weiß ich nicht an welcher Stelle ich nun das Feld einbauen muss...
Muss das in die Methode, in der ich die aktuellen Temperaturwerte berechne??
(d.h. in der sich die Variable, die ich brauche, befindet)
Oder wo genau muss das Feld hin???

So sieht die Methode für die Temperatur aus:

Code:
private void calcAirTemperature(String inputStr)  {  // Lufttemperatur
  	
  	if (inputStr != null)  // falls fehlerhafter Aufruf 
     { 
      int anf2 = inputStr.indexOf("T0");        
      if (anf2 != -1) 
       { 
         System.out.println (" Lufttemperatur:"); 
         System.out.println (" "); 
         System.out.println (" "); 
       
         inputStr = inputStr.substring(inputStr.indexOf("T0"));
             
         for (int j = 0; j<inputStr.length(); j++) 
           { 
             inputStr = inputStr.replaceAll("  "," "); 
           } 
            
             String[] a = inputStr.split(" "); 
        
              System.out.println(" stuendlicher Mittelwert ???");
            double b2 = Double.parseDouble (a[4]);
            double t2 = b2/10;
              System.out.println(" Maximalwert letzte Stunde: " + t2 + " Grad Celsius");
            double b3 = Double.parseDouble (a[5]);
            double t3 = b3/10;
              System.out.println(" Minimalwert letzte Stunde: " + t3 + " Grad Celsius");
            double b4 = Double.parseDouble (a[1]);
            double t4 = b4/10;
              System.out.println(" Aktueller Wert: " + t4 + " Grad Celsius");
            double b5 = Double.parseDouble (a[2]);
            double t5 = b5/10;
              System.out.println(" 10 - Minuten - Maximalwert: " + t5 + " Grad Celsius");
            double b6 = Double.parseDouble (a[3]);
            double t6 = b6/10;
              System.out.println(" 10 - Minuten - Minimalwert: " + t6 + " Grad Celsius");
              System.out.println(" ");
          }
        }
     }

t4 ist hierbei der Minutenwert, den ich speichern will...
 

gustav

Aktives Mitglied
Okay wenn ich es jetzt richtig verstehe ist calcAirTemperature(..) Deine Methode die in jeder Minute einmal aufgerufen wird. Also speicherts Du dort auch Deine aktuelle Temperatur ab. Weiterhin musst Du aber noch rausfinden, wenn eine Stunde um ist, damit der Mittelwert berechnet werden kann. Aus Deinen bisherigen Äußerungen entnehme ich, das die einzelnen gemessenen Werte später keine Rolle mehr spielen - ALSO brauchen diese auch nicht in einem Feld abgespeichert werden. Stattdessen schlage ich vor, das Du die Werte aufaddierst und nach 60 Minuten (60 Messungen) einfach dividierst.
Ich stelle mir das grob gesehen so vor :
Code:
public class TMeasure
{
   private double tempMittelWert = 0.0 ;
   private int tempCounter = 0 ;

   private void calcAirTemperature(String inputStr)  
   {
      // ...
      // bla bla bla
      // ...

      tempMittelWert = tempMittelWert + t4 ;  // fuer die Mittelwertbildung der Temp
      tempCounter++ ;
      
      if (tempCounter > 59)   // 60 Messwerte !!!
      {
           // Mittelwert berechnen - Variable noch definieren !!!!!
         newTempMittelWert = (tempMittelWert / tempCounter) ;
         System.out.println(" stuendlicher Mittelwert: " +newTempMittelWert) ;

           // reset Daten
         tempMittelWert = 0.0 ;
         tempCounter = 0 ;
      }
   }
   
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
amazinglife77 Input/Output Lesen/Schreiben Properties: in eclipse geht, als JAR nicht Java Basics - Anfänger-Themen 4
E Gibt es in Java Properties (wie in C#) Java Basics - Anfänger-Themen 6
D Von einem Objekt auf Properties zugreifen Java Basics - Anfänger-Themen 3
U Properties außerhalb des war-Files Java Basics - Anfänger-Themen 1
U Richtig *.properties speichern Java Basics - Anfänger-Themen 0
Z Erste Schritte Versuche ein Labyrinth in einem Terminal zu erstellen, aber kann die properties Datei nicht einlesen Java Basics - Anfänger-Themen 3
I Properties oder Umgebungsvariablen mit ${irgendwas} lesen? Java Basics - Anfänger-Themen 2
I beim auslesen der Properties gibt es ein Fehler Java Basics - Anfänger-Themen 7
kaoZ Best Practice Properties oder Preferences ? Java Basics - Anfänger-Themen 16
M Umgebungsvariable JFileChooser#setCurrentDirectory via Properties setzen? Java Basics - Anfänger-Themen 5
P Properties speichern Java Basics - Anfänger-Themen 1
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
A Properties erweitern Java Basics - Anfänger-Themen 2
G Java Properties, Downloader Java Basics - Anfänger-Themen 5
O Java Properties - Daten auslesen Java Basics - Anfänger-Themen 13
T Schlüsselworte Probleme mit den Properties Java Basics - Anfänger-Themen 7
U Radar Charts und Properties Java Basics - Anfänger-Themen 11
R Input/Output Speichern von Properties führt zu merkwürdigen "\" Java Basics - Anfänger-Themen 4
B Properties ausgeben Java Basics - Anfänger-Themen 5
B Properties oder Serializable Java Basics - Anfänger-Themen 3
S Properties-Datei schützen Java Basics - Anfänger-Themen 6
P Properties Datei auslesen? Komfortabeler? Java Basics - Anfänger-Themen 2
J Liste als Properties Java Basics - Anfänger-Themen 6
M Input/Output log4j mit properties datei Java Basics - Anfänger-Themen 6
T Vorgehen Properties Java Basics - Anfänger-Themen 4
S jcal4j/jlog4j Wo muss die Properties file rein? Java Basics - Anfänger-Themen 2
T Properties Datei gruppieren Java Basics - Anfänger-Themen 2
S Unterschied java.util.prefs / java.util.Properties Java Basics - Anfänger-Themen 3
I Problem mit Properties-Kommentare Java Basics - Anfänger-Themen 2
M Properties hinzufügen Java Basics - Anfänger-Themen 12
ruutaiokwu properties values automatisch escapen ??? Java Basics - Anfänger-Themen 3
M Properties Eintrag löschen, welcher in der JList "ausgewählt" wurde Java Basics - Anfänger-Themen 2
L Properties Reihenfolge vorgeben Java Basics - Anfänger-Themen 13
H Arbeiten mit Properties Java Basics - Anfänger-Themen 8
E Parameter aus Properties-Datei einlesen Java Basics - Anfänger-Themen 35
raptorrs Schreiben in Properties-File klappt nicht Java Basics - Anfänger-Themen 6
A log4j - wie kann ich im Quellcode initialisieren statt in der properties-Datei? Java Basics - Anfänger-Themen 2
Z Anfänger Problem mit Properties Java Basics - Anfänger-Themen 8
J Java.Util.Properties wrapper class (Review Request) Java Basics - Anfänger-Themen 2
R Properties über statischen Pfad laden Java Basics - Anfänger-Themen 2
M Erstbefüllung Properties Java Basics - Anfänger-Themen 3
L System-Properties Java Basics - Anfänger-Themen 4
Y Preferences / Properties Anwendung plattformunabhängig Java Basics - Anfänger-Themen 4
? java.util.Properties Wert von key mehrfach vorhanden Java Basics - Anfänger-Themen 13
K Convert Properties to File Java Basics - Anfänger-Themen 2
G ResourceBundle - Properties Java Basics - Anfänger-Themen 3
T Properties casten Java Basics - Anfänger-Themen 4
G Pfadangaben in properties file Java Basics - Anfänger-Themen 3
S has no properties Java Basics - Anfänger-Themen 2
M Properties Datei - einlesen Java Basics - Anfänger-Themen 18
G Properties im jar file speichern Java Basics - Anfänger-Themen 6
G Properties in jar File . Java Basics - Anfänger-Themen 2
M Variablen innerhalb der properties-datei Java Basics - Anfänger-Themen 2
B Properties erkennen, auslesen Java Basics - Anfänger-Themen 7
L Pfad per Properties schreiben lassen Java Basics - Anfänger-Themen 2
G Nutzt ihr die Methode storeToXML von Properties Java Basics - Anfänger-Themen 2
G Inhalte in einer Properties Datei setzen? Java Basics - Anfänger-Themen 14
N Properties in einen Vector Java Basics - Anfänger-Themen 6
M relative Pfadangabe beim laden von properties Datei Java Basics - Anfänger-Themen 4
G .properties lesen Java Basics - Anfänger-Themen 17
G Properties und eine Liste in einem entry key. Java Basics - Anfänger-Themen 2
V Sprache umschalten mit properties-files mit KSKB Java Basics - Anfänger-Themen 3
V Menüeinträge und ähnliches aktualisieren (aus properties) Java Basics - Anfänger-Themen 10
loadbrain Properties file einlesen Java Basics - Anfänger-Themen 2
B Properties speichern Java Basics - Anfänger-Themen 2
B Zugriff auf Properties Java Basics - Anfänger-Themen 6
R Umlaute in einer .properties-Datei Java Basics - Anfänger-Themen 1
dercheffe properties Java Basics - Anfänger-Themen 2
G properties-Datei innerhalb eines package auslesen Java Basics - Anfänger-Themen 3
G Properties-Objekt erzeugt Java Basics - Anfänger-Themen 3
P Java.utll.properties in datei schreiben Java Basics - Anfänger-Themen 6
L Programmsprache wechseln (Labels.): Properties auslesen Java Basics - Anfänger-Themen 2
S Properties im Jar FileNotFound Java Basics - Anfänger-Themen 2
G properties und image Dateien aus jar einlesen Java Basics - Anfänger-Themen 4
M Properties ausserhalb von jar files Java Basics - Anfänger-Themen 3
J Zugreifen *.properties auserhalb von *.jar Java Basics - Anfänger-Themen 5
E Model und i18n bzw. Properties Java Basics - Anfänger-Themen 10
M Kann man den Kommentar der Properties-Klassen auslesen? Java Basics - Anfänger-Themen 2
P Kann kein Array von Properties erstellen. Java Basics - Anfänger-Themen 5
T Stelle wo ich Properties-Datei auslesen kann? Java Basics - Anfänger-Themen 6
F Properties -- diesmal löschen Java Basics - Anfänger-Themen 3
F Properties nachträglich hinzufügen Java Basics - Anfänger-Themen 3
N Properties auf Kommandozeile setzen, die erhalten bleiben Java Basics - Anfänger-Themen 2
S Java Beans - Bound Properties Java Basics - Anfänger-Themen 6
S Für Properties ein foreach? Java Basics - Anfänger-Themen 7
T Properties im JAR speichern - FileNotFound Java Basics - Anfänger-Themen 4
G properties Datei in jar-File wird nicht gefunden Java Basics - Anfänger-Themen 5
C Properties Methode parsen? Java Basics - Anfänger-Themen 3
D Properties in Datei schreiben Java Basics - Anfänger-Themen 4
N Kommentare in Properties-Dateien Java Basics - Anfänger-Themen 6
K Zugriff auf WINDOWS Properties??? Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben