![]() |
|
|||||||
| Java Basics - Anfänger-Themen Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern |
|
|
|
Themen-Optionen | Thema durchsuchen | Ansicht |
| #1 (permalink) | |
|
Stammbenutzer
Kilobyte
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
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 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 |
|
|
| #3 (permalink) | ||||||||||||||||
|
Stammbenutzer
Kilobyte
Themenstarter
Registriert seit: 26.11.2007
Fachbeiträge: 141
Abgegebene Danke: 0
Erhielt 1 Danke für 1 Beitrag
|
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 |
|||||||||||||||
|
|
||||||||||||||||
| #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.
|
|
|
| #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. |
|
|
| #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
|
|
|
| #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, |
|
|
| #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();
}
|
|
|
| #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
|
|
|
| #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 |
|
|
| #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
|
|
|
| #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();
Damit der Code funktioniert muss du noch folgendes am Anfang einfügen: Code:
import java.io.FileReader; import java.io.BufferedReader; |
|
|
| #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)
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();
}
|
|
|
| #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
|
|
|||||||||||||||
|
|
||||||||||||||||
| #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");
Code:
if (file.exists()) 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? |
|
|
| #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)
{
}
Da du die Datei ja vorher ausliest ist es ja kein Problem den Inhalt immer wieder zu überschreiben. |
|
|
|
| Themen-Optionen | Thema durchsuchen |
| 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 |
|
|