-
30. 09. 2011, 22:46 #1Mitglied
- Registriert seit
- Mar 2011
- Beiträge
- 29
[Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Guten Abend alles zusammen,
ich habe folgendes Problem.
Ich bin Zurzeit daran ein Plugin zu schreiben für Bukkit. Und ich habe in einer Datei mehrere Datensätze liegen und zwar pro Zeile habe ich 2 Strings. Einmal den Playernamen und einmal den Kontostand.
Nun möchte ich die Datei Zeilenweise auslesen und jede Zeile in einen String speichern bzw. in ein Array damit ich besser auf den Kontostand zugreifen kann.
Ich suche danach schon etwa 2-3 h und habe noch nicht das richtige gefunden.
Die Funktion/Methode dafür sieht momentan noch folgender Maßen aus:
Ich hoffe ihr könnt mir Tipps geben wie ich das am besten lösen kann.Code:public void showMoney(String target) throws IOException { FileReader freader = new FileReader(file2); BufferedReader reader = new BufferedReader(freader); while(true) { String line = reader.readLine(); if(line != null) { // buffer.append(line); if(line.indexOf(target) > -1) { // FOUND //money = "money"; } } else break; } }
Danke schonmal im Vorraus
greetz qilpGeändert von qlip (30. 09. 2011 um 22:59 Uhr)
-
01. 10. 2011, 00:01 #2
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Wenn Du jetzt noch erklärst wie so eine Zeile konkret aussieht, dann wird es vielleicht auch was mit dem Helfen.Und ich habe in einer Datei mehrere Datensätze liegen und zwar pro Zeile habe ich 2 Strings. Einmal den Playernamen und einmal den Kontostand.
-
01. 10. 2011, 05:01 #3Mitglied
(Threadstarter)
- Registriert seit
- Mar 2011
- Beiträge
- 29
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Hier ein paar Zeilen zur besseren Ansicht.
Ich hoffe so ist es verständlich genugCode:qlip 1000 Bob 1000 Own 1000
greetz qlip
-
01. 10. 2011, 09:36 #4
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Ist das wonach du suchts?Code:import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; public class Main { /** Datei mit Input. */ private static String file = "C:\\data.log"; public static void main(String[] args) throws IOException { final BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(file))); Map<String, String> function = new HashMap<String, String>(); for(String line = input.readLine(); line != null; line = input.readLine()){ line = line.trim(); final String[] values = line.split("\\s+"); if(values.length == 2) function.put(values[0], values[1]); } for(Map.Entry<String, String> element: function.entrySet()){ System.out.printf("%s %s%n", element.getKey(), element.getValue()); // .... } } }
-
03. 10. 2011, 19:57 #5Mitglied
(Threadstarter)
- Registriert seit
- Mar 2011
- Beiträge
- 29
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Schaut so aus werde es morgen oder so mal testen
gebe dann Feedback
danke schonmal
greetz qlip
-
03. 10. 2011, 20:48 #6
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Wenn du schon Java 1.7 nutzen kannst, dann kannst du dir den ganzen sinnlosen Schwachsinn mit dem BufferedReader/InputStreamReader etc sparen und einfach Files.readAllLines() nutzen.
Ansonsten ist der Code mal wieder ein Beweis wie sehr Java doch suckt. (auch mit readAllLines)
C#
Geht es noch einfacher, schöner und lesbarer??PHP-Code:var list = from line in File.ReadLines(path)
let split = line.Split(' ', StringSplitOptions.RemoveEmptyEntries)
let name = split[0]
let konto = split[1]
select new {Name = name, Konto = konto};
C# ♥♥♥
-
04. 10. 2011, 10:26 #7
-
04. 10. 2011, 20:31 #8
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Mir nicht.
Das war btw kein Angriff auf deinen Code, ich hätte den wahrscheinlich ähnlich geschrieben weil es mit Java eben nicht besser geht.
-
06. 10. 2011, 17:03 #9Mitglied
(Threadstarter)
- Registriert seit
- Mar 2011
- Beiträge
- 29
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
So ich habe es mal folgender Maßen eingebunden:
und wenn ich den Command /money anwende bekomme ich die Fehlermeldung das es nicht handlen kann.Code:public void showMoney(String target, String[] values, File file2) throws IOException { FileReader freader = new FileReader(file2); BufferedReader reader = new BufferedReader(freader); while(true) { String line = reader.readLine(); if(line != null) { // buffer.append(line); if(line.indexOf(target) > -1) { // FOUND //Test BufferedReader input = new BufferedReader(new InputStreamReader(new FileInputStream(file2))); Map<String, String> function = new HashMap<String, String>(); for(String line1 = input.readLine(); line1 != null; line1 = input.readLine()){ line1 = line1.trim(); values = line1.split("\\s+"); if(values.length == 2) function.put(values[0], values[1]); } } } else break; } /*for(Map.Entry<String, String> element: function.entrySet()){ System.out.printf("%s %s%n", element.getKey(), element.getValue()); // .... }*/ }
Also das er eine Referenz auf NULL hat.
Entweder bin ich gerade zu doof oder ich habe echt was falsch gemacht.
greetz qlip
-
06. 10. 2011, 18:06 #10Mitglied
- Registriert seit
- May 2009
- Beiträge
- 1.888
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
-
06. 10. 2011, 22:17 #11
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Was bedeuten die Parameter target und values der Funktion showMoney?
Willst du nur die Geldbeträge ausgeben, dann musst du in der letzten for Schleife nur element.getValue() ausgeben lassen.
-
07. 10. 2011, 13:54 #12Mitglied
(Threadstarter)
- Registriert seit
- Mar 2011
- Beiträge
- 29
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Also da es ein Plugin für Bukkit ist und ich den Fehler in der Console bekomme habe ich jetzt mal einen sreenshot von der ganzen sache gemacht.

Ich hoffe das es so ersichtlicher ist.
greetz qlip
edit: Die Parameter ist einmal der String der gesucht werden soll und einmal das Array in welches dann noch die ergebnisse gespeichert werden sollen.
-
07. 10. 2011, 15:34 #13Mitglied
- Registriert seit
- May 2009
- Beiträge
- 1.888
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Die 12 fehlenden Zeilen sind wichtig, so kann zumindest ich dazu nix sagen.
Also am besten die 12 fehlenden Zeilen besorgen und den KOMPLETTEN Stacktrace als Text hier posten.Geändert von hartweizen (07. 10. 2011 um 15:51 Uhr)
-
07. 10. 2011, 16:08 #14Mitglied
(Threadstarter)
- Registriert seit
- Mar 2011
- Beiträge
- 29
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Egal was ich mache ich komme nicht an die 12 weiteren Zeilen dran..
In der Log steht auch nur das 12 weitere fehlen.
Einer ein Tipp wie ich da noch dran kommen könnte?
greetz qlip
ps. sorry das ich gearde sowas von aufm schlauch stehe
-
07. 10. 2011, 18:06 #15
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Zitat von sumisumi
Code:with open(path, "r") as f: lst = [line.split()[:2] for line in f]
-
12. 10. 2011, 19:21 #16Mitglied
(Threadstarter)
- Registriert seit
- Mar 2011
- Beiträge
- 29
Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern
Also der Fehler ist inzwischen behoben.
Nur er gibt mir immer "null" zurück.
Also einmal der Ablauf wenn man seinen Kontostand einsehen will:
- Befehl Ingame eingeben "/money"
- Die Funktion "showmoney" wird aufgerufen.
- Die Datei accounts.txt wird nach dem usernamen durchsucht der den Befehl eingegeben hat. (Das ist Problem nr.1)
- Wenn Name gefunden wird der Kontostand der mit 4 Leerzeichen von Usernamen getrennt ist.(Problem Nr.2)
- Der Kontostand wird beim Usern ausgegeben.(gibt nur "null" aus).
Kann mir bitte wer helfen weil ich komme einfach nicht mehr klar.
greetz qlip
-


Zitieren

mehr lesen...







Mechwarrior Online: Closed Beta...
Heute, 12:36 in gulli:news