java-forum.org - Java programmieren aus Leidenschaft

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Java Basics - Anfänger-Themen

Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 07.12.2007, 16:09   #1 (permalink)
Stammbenutzer
Kilobyte
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
Standard kleine datenbank

mein programm liest aus einer htmlseite gewisse daten von irgendwelchen usern aus und rechnet mit ihnen und speichert
diese nun in einer textdatei die den namen des users trägt, die kann zb wie folgt aussehn :

Inhalt von DNAofDeath.txt :
Code:
Registriert am : 24.01.2006
Verbrachte Minuten : 5835.0
UserLevel : 0.5941
Letzte aktualisierung : 07.12.2007
mein problem was ich habe ist das er bei jedem neuen durchlauf die werte nicht überschreibt sondern beim nächsten
durchlauf die daten einfach darunter schreibt, da jedoch
"Registriert am : " eine konstante ist, dh sich nach einem mal eintragen nicht mehr ändert soll er das dann auch
übergehen

und

bei verbrachte minuten soll der wert immer nur aktualisiert werden,

bei UserLevel soll einfach nur der neue wert mit dem alten verglichen werden
und bei einer änderung des wertes soll darunter hingeschrieben werden : Hat sich am "datum des durchlaufs" um
"differenz zum alten wert" geändert ,zeilenumbruch, "neuer wert : "wert""

die letze aktualisierung soll einfach immer nur ersetzt werden duch das aktuelle datum

es werden nacher mehrere tausend dateien sein, wobei durch eine kleine suche auch zb ein beliebiger user rausgesucht
werden soll und seine werte ausgegeben werden sollen und bei bedarf noch andere informationen in diese datei
eingetragen werden können [kommentare zb][momentan ist alles noch konsole]
aber eins nach dem anderen,

ich hab zwar wie man sehen kann schon den aufbau der minidatenbank im kopf und weiß auch schon wie man
textdateien erstellt aber ich habe ein problem mit dem auslesen und ändern von gewissen bestimmten daten,
wäre nett wenn ihr mir bei der lösung meines problems helfen könntet
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.12.2007, 16:35   #2 (permalink)
Java-Forum Team
Moderator
 
Registriert seit: 13.09.2007
Fachbeiträge: 12.807
Abgegebene Danke: 230
Erhielt 824 Danke für 731 Beiträge
Nimm eine relationale DB und vergiss Textfiles, die 70'er Jahre sind vorbei

Viel einfacher und weniger Aufwand, wenn man es mal verstanden hat.
maki ist gerade online  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.12.2007, 16:43   #3 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
Zitat:
Nimm eine relationale DB und vergiss Textfiles, die 70'er Jahre sind vorbei
[Ironie [an]] achso klar, hab ich doch glatt vergessen das es das gibt *vornkopphau* sorry für die frage [Ironie [aus]]

was soll das denn sein? da hab ich noch nie etwas von gehört, und bedenke bitte das ich anfänger bin und im moment noch die basics von java lerne,sollte das eine zu komplizierte angelegenheit werden, dann komm ich da eh nicht weit.

bitte nen link zu ner info seite geben [DEUTSCHE bitte] oder einfach vllt mal selber erklären ,danke
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.12.2007, 16:54   #4 (permalink)
Stammbenutzer
Halbes Megabyte
 
Registriert seit: 08.11.2006
Fachbeiträge: 552
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
Alles ist in deutsch erklärt im IneslBuch

lg
DocRandom
DocRandom ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.12.2007, 16:54   #5 (permalink)
Stammbenutzer
Floppy Disc
 
Registriert seit: 10.01.2007
Fachbeiträge: 931
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Wie schreibst du denn in die Datei? Schau dir mal die Konstruktoren der Klasse FileOutputStream an, da gibt es einen mit einem Flag, ob er die neuen Daten dranhängen soll oder alles überschreiben soll.
JPKI ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.12.2007, 17:09   #6 (permalink)
Java-Forum Team
Moderator
 
Registriert seit: 13.09.2007
Fachbeiträge: 12.807
Abgegebene Danke: 230
Erhielt 824 Danke für 731 Beiträge
Kurz gesagt um Daten zu speichern (neudeutsch "persistieren") braucht man etwas, wohin sie gespeichert werden.
Textdateien wäre eine veraltete, umständliche und sehr fehleranfällige Möglichkeit.
Bessere Alternativen wären eine relationale Datenbank oder Serialisierung.
Ersterer ist zwar komplexer, aber bietet mehr Möglichkeiten zur Auswertung und Wartung der Daten(suchen, sortieren, etc.pp.). Mit letzterem kann man Java Objekte direkt Speichern (zB. auf die Festplatte zu schreiben) und zu einem späteren Zeitpunkt wieder einlesen.

http://de.wikipedia.org/wiki/Relationale_Datenbank

In englischer Sprache gibt es oft mehr Auswahl an Informationen, Java wird schwer ohne Englischkenntnisse, solltest da ein Wörterbuch oder Google benutzen.
maki ist gerade online  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.12.2007, 17:13   #7 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
ich habe englischkenntnisse die eigendlich sehr gut sind, aber des öfteren stolpere ich über begrifflichkeiten oder gar ganze sätze mit denen ich probs hab
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.12.2007, 17:26   #8 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
ARGH

lol ich bin anfänger, das was ich da im JIAEI lese scheint aber nicht für anfänger geeignet zu sein, ich will die Mini-Datenbank ja auch nur zu lernzwecken nutzen, ich bin weder ein industrieller noch bin ich ein schüler, ich lerne zwar viel CrossOver und manches auch erst dann wenn ich es brauche, aber hier scheint mir meine grundlage noch NICHT groß genug zu ein als das ich damit etwas anfangen kann, also okay, lesen kann ich schon, aber VERSTEHEN und lesen sind zwei verschiedene paar schuhe, bitte bleiben wir doch bei dem beispiel was ich gesagt habe, auch wenn das manchen leuten hier unlogisch und dumm vorkommen mag, aus meiner sicht der dinge bin ich was java betrifft immernoch bei den anfänglichen spielereien,
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.12.2007, 17:48   #9 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
ich schreibe mit folgendem code in die datei :

Code:
                       boolean b3 = true;
                                boolean b4 = true;
                                try {
                                    File file = new File("D:\\Java\\Projekte\\nickliste\\" + nick + ".txt");
                                    FileWriter fw = null;
                                    if (file.exists()) {
                                        if (b3) {
                                            System.out.println("Datei existiert bereits.");
                                            b3 = false;
                                        } else {
                                            System.out.println("Datei wird erstellt.");
                                            b3 = false;
                                        }
                                    }
                                    fw = new FileWriter(file.getPath(), true);
                                    PrintWriter pw = new PrintWriter(fw);
                                    if (b4) {
                                        pw.println("Registriert am : " + datum1);
                                        pw.println("Verbrachte Minuten : " + onMinD);
                                        pw.println("UserLevel : " + erg);
                                        pw.println("Letzte aktualisierung : " + datum);
                                        b4 = false;
                                    }
                                    fw.flush();
                                    fw.close();
                                    pw.flush();
                                    pw.close();
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.12.2007, 18:01   #10 (permalink)
Stammbenutzer
Floppy Disc
 
Registriert seit: 10.01.2007
Fachbeiträge: 931
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Mal abgesehen davon, dass da einige schwachsinnige if-Abfragen drinne sind, gibt es von der Klasse FileWriter laut API nur einen Konstruktor.
Ich würde dir FileOutputStream empfehlen, dann weisst du, woran du bist:
Code:
FileOutputStream stream = new FileOutputStream("dateiname.txt",false); //false, wir wollen die Datei neu schreiben und nichts anhängen
JPKI ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 15:02   #11 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
hmm und was mache ich dann mit stream?
wenn ichs mir ausgeben lassen will kommt nur das hier:

java.io.FileOutputStream@901887

und ähnliches was muss ich machen damit ich mit den inhalten der dateien arbeiten kann?

hilfe bin echt verzweifelt
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 15:48   #12 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
ich möchte doch bloß wissen wie man aus einer textdatei strings und doubles ausliest, und diese dann über System.out.println ausgeben kann, mehr nicht
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 16:11   #13 (permalink)
Stammbenutzer
Kilobyte
 
Registriert seit: 20.09.2007
Fachbeiträge: 227
Abgegebene Danke: 2
Erhielt 1 Danke für 1 Beitrag
Hiermit liest man Zeile für Zeile aus:

Code:
         br = new BufferedReader(new FileReader(datei)); //datei ist ja wohl klar ... ;-) Da muss der String von dem Dateinnamen hin
         while((zeile = br.readLine()) != null) {
            br.readLine(); // Dies ist der String den du verarbeiten möchtest
         }
         br.close();
Da du ja weißt in welcher Zeile was steht kannst du einen Zähler nebenher laufen lassen und mit einer switch-Bedingung deine Werte in die richtigen Variablen speichern.

Damit der Code funktioniert muss du noch folgendes am Anfang einfügen:
Code:
import java.io.FileReader;
import java.io.BufferedReader;
H3llGhost ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 17:13   #14 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
danke danke, jetzt bin ich schon ein stück weiter gekommen, aber mein nächstes problem wobei ich noch hilfe brauchen könnte ist das ich nun folgende Exception bekomme:

Code:
        Exception in thread "main" java.lang.NullPointerException
        at java.io.Writer.<init>(Writer.java:71)
        at java.io.PrintWriter.<init>(PrintWriter.java:75)
        at java.io.PrintWriter.<init>(PrintWriter.java:62)
        at DNA.java.UserLevel.main(UserLevel.java:124)
hier mal mein code mit dem ich die datei bearbeiten will:

Code:
try {
                                    File file = new File("D:\\Java\\Projekte\\nickliste\\" + nick + ".txt");
                                    FileWriter fw = null;
                                    PrintWriter pw = new PrintWriter(fw);
                                    fw = new FileWriter(file.getPath(), true);
                                    System.out.println(file);
                                    
                                    
                                    if (file.exists()) {
                                        BufferedReader br = new BufferedReader(new FileReader("D:\\Java\\Projekte\\nickliste\\" + nick + ".txt"));
                                        while ((zeile = br.readLine()) != null) {
                                            br.readLine();
                                            if (zeile.contains("UserLevel")) {
                                                double diff = Double.valueOf(zeile.substring(12)).doubleValue();
                                                double change = diff - erg;
                                                if (change == 0) {
                                                    
                                                    pw.println("UserLevel hat sich am " + date + " um " + change + " geändert.");
                                                    String ergS = "" + erg;
                                                    zeile.replace(zeile.substring(12), ergS);
                                                }
                                            }
                                            continue;
                                        }
                                        br.close();
                                        System.out.println("Datei wird geupdated.");
                                    } else {
                                        System.out.println("Datei wird erstellt.");                                        
                                        fw = new FileWriter(file.getPath(), true);
                                        pw.println("Registriert am : " + datum1);
                                        pw.println("Verbrachte Minuten : " + onMinD);
                                        pw.println("UserLevel : " + erg);                                        
                                        pw.println();
                                        pw.flush();
                                        pw.close();
                                        fw.flush();
                                        fw.close();
                                    }
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 17:15   #15 (permalink)
Java-Forum Team
Moderator
 
Registriert seit: 13.09.2007
Fachbeiträge: 12.807
Abgegebene Danke: 230
Erhielt 824 Danke für 731 Beiträge
Mach da doch mal die Reihenfolge richtig:
Code:
                          
FileWriter fw = null;
PrintWriter pw = new PrintWriter(fw);
fw = new FileWriter(file.getPath(), true);
maki ist gerade online  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 17:22   #16 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
lol ich bin dumm glaub ich xD DAS hätte mir auch selbst einfallen können, naja danke für den kleinen aber feinen tipp =)
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 17:43   #17 (permalink)
Java-Forum Team
Moderator
 
Registriert seit: 13.09.2007
Fachbeiträge: 12.807
Abgegebene Danke: 230
Erhielt 824 Danke für 731 Beiträge
Zitat: DNAofDeath
lol ich bin dumm glaub ich xD DAS hätte mir auch selbst einfallen können, naja danke für den kleinen aber feinen tipp =)
Da bin ich mir sicher, solltest die Exceptions genau lesen, stand ja alles drinn
maki ist gerade online  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 17:47   #18 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
ich habe nun ein etwas komplexeres problem, ich möchte ja bestimmte aktiuonen nur ausführen wenn die entsprechende datei existiert, ABER das ich ja mit

Code:
File file =  new File("D:\\Java\\Projekte\\nickliste\\" + nick + ".txt");
immer eine neue datei anlege, ist die datei bei der abfrage

Code:
if (file.exists())
ja sowieso schon vorhanden dann wird er IMMER nur das machen was in der if anweisung steht, in meinem fall heißt das NIX

denn wenn die datei noch nicht vorhanden ist soll er eine neue anlegen und dann gewisse dinge da reinschreiben, wie in meinem etwas größeren code oben gut zu sehen ist.

wie kann ich das lösen? wie kann ich vorher prüfen ob die datei vorhanden ist, und sie erst dann neu anlegen wenn sie nicht existiert?
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 17:53   #19 (permalink)
Stammbenutzer
Kilobyte
 
Registriert seit: 20.09.2007
Fachbeiträge: 227
Abgegebene Danke: 2
Erhielt 1 Danke für 1 Beitrag
Versuche sie einfach mit dem FileReader zu öffnen ...
Du packst das in eine try-catch-Schleife und wenn es eine Exception gibt, dann weißt du, dass es die Datei noch nicht gibt.

Zum Schreiben einer Datei nehme ich den FileWriter und dazu gibt es auch den BufferedWriter.

Code:
      try{
         bw = new BufferedWriter(new FileWriter(datei));
         bw.write("blabla");
         bw.newLine();
         bw.close();
      } catch (Exception e)
      {
      }
Der schreibt jedes Mal bei mir die Datei neu und fängt sogar vorne an.
Da du die Datei ja vorher ausliest ist es ja kein Problem den Inhalt immer wieder zu überschreiben.
H3llGhost ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.12.2007, 18:02   #20 (permalink)
Stammbenutzer
Kilobyte
Themenstarter
 
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
WOW xD

da muss ich ja wieder ganz von vorne anfangen mit dem aufbau, gibt es keine lösung für mein jetziges gerüst?
DNAofDeath ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Eine kleine Frage bzw kleine Theorie frage String[arg] math.iso@live.de Java Basics - Anfänger-Themen 6 21.11.2008 10:02
kleine mp3 Lib The_S Allgemeine Java-Themen 17 10.04.2008 11:47
Datenbank Explorer in Eclipse - Fehler by MySQL Datenbank miketech IDEs und Tools 0 26.07.2007 14:47
Tabellen aus Datenbank 1 nach Datenbank 2 TRex2003 Datenbankprogrammierung 2 23.06.2007 08:39
XML als "Datenbank" für kleine Daten XML und Co. 2 13.02.2005 20:20


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:19 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de