Ergebnis 1 bis 16 von 16
  1. #1
    Mitglied
    Registriert seit
    Mar 2011
    Beiträge
    29

    Standard [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:
    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;
    		}
    	}
    Ich hoffe ihr könnt mir Tipps geben wie ich das am besten lösen kann.

    Danke schonmal im Vorraus

    greetz qilp
    Geändert von qlip (30. 09. 2011 um 22:59 Uhr)

  2. #2
    Mitglied Avatar von lupo1977
    Registriert seit
    Feb 2006
    Ort
    Hier & Jetzt
    Beiträge
    1.151

    Standard Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern

    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.
    Wenn Du jetzt noch erklärst wie so eine Zeile konkret aussieht, dann wird es vielleicht auch was mit dem Helfen.

  3. #3
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Beiträge
    29

    Standard Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern

    Hier ein paar Zeilen zur besseren Ansicht.

    Code:
    qlip    1000
    Bob    1000
    Own    1000
    Ich hoffe so ist es verständlich genug

    greetz qlip

  4. #4
    Mitglied Avatar von ronnie_10
    Registriert seit
    Dec 2007
    Beiträge
    315

    Standard Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern

    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());
    			// ....
    		}
    		
    	}
    
    }
    Ist das wonach du suchts?

  5. #5
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Beiträge
    29

    Standard 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

  6. #6
    \o/ Avatar von sumisumi
    Registriert seit
    Jan 2008
    Beiträge
    4.039

    Standard 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#
    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 nameKonto konto}; 
    Geht es noch einfacher, schöner und lesbarer??
    C# ♥♥♥

  7. #7
    Mitglied Avatar von ronnie_10
    Registriert seit
    Dec 2007
    Beiträge
    315

    Standard Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern

    Zitat Zitat von sumisumi Beitrag anzeigen
    Ansonsten ist der Code mal wieder ein Beweis wie sehr Java doch suckt. (auch mit readAllLines)
    Geschmackssache. Mir persönlich gefällt Java.

  8. #8
    \o/ Avatar von sumisumi
    Registriert seit
    Jan 2008
    Beiträge
    4.039

    Standard 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.

  9. #9
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Beiträge
    29

    Standard Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern

    So ich habe es mal folgender Maßen eingebunden:

    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());
    				// ....
    			}*/
    		}
    und wenn ich den Command /money anwende bekomme ich die Fehlermeldung das es nicht handlen kann.

    Also das er eine Referenz auf NULL hat.

    Entweder bin ich gerade zu doof oder ich habe echt was falsch gemacht.

    greetz qlip

  10. #10
    Mitglied
    Registriert seit
    May 2009
    Beiträge
    1.888

    Standard Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern

    Zitat Zitat von qlip Beitrag anzeigen
    Entweder bin ich gerade zu doof oder ich habe echt was falsch gemacht.
    Ja, du hast dir den Stacktrace den du von Java bekommen hast vermutlich nicht gut genug angeschaut.

    Und uns hast du ihn vorenthalten.

    Und unter anderem deshalb schaue ich mir jetzt nicht den Code an und versuche ohne den Stacktrace einen Fehler zu entdecken.

  11. #11
    Mitglied Avatar von ronnie_10
    Registriert seit
    Dec 2007
    Beiträge
    315

    Standard 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.

  12. #12
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Beiträge
    29

    Standard 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.

  13. #13
    Mitglied
    Registriert seit
    May 2009
    Beiträge
    1.888

    Standard 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)

  14. #14
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Beiträge
    29

    Standard 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

  15. #15
    hat Spaß dran... Avatar von 12345z
    Registriert seit
    Aug 2007
    Beiträge
    1.804

    Standard Re: [Java] Datei Zeile für Zeile auslesen und in String/Array speichern

    Zitat Zitat von sumisumi
    Geht es noch einfacher, schöner und lesbarer??
    Code:
    with open(path, "r") as f:
        lst = [line.split()[:2] for line in f]

  16. #16
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Beiträge
    29

    Standard 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

  17.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •