tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Bratkartoffel
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
267
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    Moin ,

    Folgendes problem:
    Klassen

    Methoden

    Ich habe eine Klasse erstellt namens ReadFromFile die eine Methode lesen() enthält. Diese Methode lesen() erhält den pfad eine Textdatei und :
    - Liest sie zeilenweise ein
    - Speichert die zeilen in ein ArrayList

    Jetzt will ich dass diese Methode die Textdateien Splittet und zwar immer bei ",".


    Diese Klasse ist ein teil von mehreren und dient als kleine aufgabe in mein Praktikum, wäre ich also sehr dankbar wenn ihr mir helfen könnt.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    import java.io.*;
    import java.util.ArrayList;
     
    public class ReadFromFile{
     public static  void lesen(String dateiname) throws IOException, RowsExceededException, WriteException{
     
     
     String line = "";
         ArrayList<String> listA = new ArrayList<String>();
     
         
         try {
                    
                    File file = new File(dateiname);
                    FileReader fr = new FileReader(file);
             //BufferedReader erstellen und mit FileReader verknüpfen
                    BufferedReader br = new BufferedReader(fr);
                            
                         
             //Solange zeilen zum ArrayList adden bis ende
                     for(int i = 0;(line = br.readLine())!=null ;i++){
                         
            
               //Hier soll die Splitt() Methode implimentiert werden nur das ****t schonmal nicht
               //           
               //        listA.add(line.Splitt("//,");
                         System.out.println(listA.get(i));
                     
            }
                  
             //Fehlermeldung falls Datei nicht vorhanden
                     }catch (FileNotFoundException e) {
                     System.out.println("File not found");
    }
      } usw..
    Geändert von Tis (10.09.10 um 11:05 Uhr)
     

  2. #2
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    du willst also quasi die Datei auslesen und anstatt an dem Zeilenumbruch an dem Kommata getrennt zurückgeben?

    Die einfachste Methode wäre, die ArrayList aus String[] bestehen zu lassen, das wären nur vier weitere Zeichen bei dir:
    Code java:
    1
    
    ArrayList<String[]> listA = new ArrayList<String[]>();

    Somit wäre jedes Element in deiner ArrayList ein String[], welches die Teile an Hand der Kommata getrennt enthält.

    Gruß
    BK
    Tis bedankt sich. 
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  3. #3
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    Hallo ,

    Es ist so das Diese Textdateien informationen erhalten und zb so aussehen:
    Code :
    1
    2
    3
    4
    5
    6
    
    ChangeFormType,Formtyp ändern
    Loading,Laden
    Show,Anzeigen
    Hide,Verstecken
    NoClassification,Keine Klassifikationen
    Missing,Fehlend

    Diese information muss ich spaltenweise in Excel speichern , ich schaffe es ein Text momentan in excel zu speichern nur muss halt den Text bei "," trennen damit ich es zelle a bzw b zuweisen kann
    Also muss da ein Splitter hin oder nicht?

    Gruß
    Geändert von Tis (10.09.10 um 11:02 Uhr)
     

  4. #4
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    so wie ich es oben geschrieben habe sollte es funktionieren.
    Mit dem Code sieht die ArrayList dann in etwa so aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    [0] => {
      [0] = "ChangeFormType",
      [1] = "Formtyp ändern"
    },
    [1] => {
      [0] = "Loading",
      [1] = "Laden"
    }
     
    Das heißt:
     
    listA.get(0)[0] = "ChangeFormType"
    listA.get(0)[1] = "Formtyp ändern"
    listA.get(1)[0] = "Loading"
    listA.get(1)[1] = "Laden"

    Diese Struktur spiegelt die für Excel benötigte Form ziemlich exakt wieder.

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  5. #5
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    Hallo,

    Danke dir bratkartoffel obwohl ich so ein bisschien hunger habe wegen dein Namen ;D

    ich gucks mir nochmal an , aber dir ist schon klar dass das ganze automatisch ablaufen soll und nicht per hand
    also mit den bufferedreader etc


    Ich weiss jetzt nicht genau wie ich die lines vom bufferedreader zum array adden soll
    Gruß
    Geändert von Tis (10.09.10 um 11:28 Uhr)
     

  6. #6
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    Hallo ,

    Kann mir den keiner sagen wie ich den ArrayList String [] mit füllen soll?

    gruß
     

  7. #7
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    du hast es ja eh schon mehr oder weniger im Code stehen, nur auskommentiert:
    Code java:
    1
    2
    
               // Hier soll die Splitt() Methode implimentiert werden nur das ****t schonmal nich
               listA.add(line.split(",");

    Details zur Methode "split()": In der Java-API

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  8. #8
    Tis Tis ist offline Mitglied Bronze
    Registriert seit
    Sep 2010
    Beiträge
    25
    Hallo,

    es ist echt zum .. Was funktioniert hier nur nicht****
    ich will einfach nur bei komma splitten, so das der text nicht nur bei zeilenumbruch sondern auch bei "," ein eigenen index im arraylist hat
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    
     
       
         try {
                    
                    File file = new File(dateiname);
                    FileReader fr = new FileReader(file);
             //BufferedReader erstellen und mit FileReader verknüpfen
                    BufferedReader br = new BufferedReader(fr);
                            
                         
             //Solange zeilen zum ArrayList adden bis ende
                     for(int i = 0;(line = br.readLine())!=null ;i++){
                         
            
           
            //  WAS IST HIER BEI SPLITT NUR FALSCH? er zeigt die kommas immer noch im text
                         listA.add(line.Splitt("//,");
                         System.out.println(listA.get(i));
                     
            }
                  
             //Fehlermeldung falls Datei nicht vorhanden
                     }catch (FileNotFoundException e) {
                     System.out.println("File not found");
    }

    Gruß
     

  9. #9
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    es muss IMHO statt
    Code java:
    1
    
    Splitt("//,")

    Code java:
    1
    
    Split("\\,")  // nur ein 't' und Backslashes !

    heißen

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  10. #10
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hallo,

    nur die Ruhe, beim Programmieren braucht man viel Geduld

    Wusse nicht, dass du nur ein eindimensionales ArrayList haben wolltest, folgendes sollte funktionieren (ist aber ungetestet; hab hier grad kein Java zur Hand)
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    ArrayList<String> elemente = new ArrayList<String>();
     
    try {
      File file = new File(dateiname);
      FileReader fr = new FileReader(file);
     
       // BufferedReader erstellen und mit FileReader verknüpfen
      BufferedReader br = new BufferedReader(fr);
     
      // Erst einmal die Datei zeilenweise auslesen.
      // Die jeweils aktuelle Zeile wird in "zeile" gespeichert.
      String zeile = null;
      while((zeile = br.readLine()) != null) {
        // Die Zeile in die einzelnen Felder aufteilen.
        // In "spalten" stehen alle Felder der Zeile, getrennt an Hand eines Kommatas
        String[] spalten = zeile.split(",");
     
        // Hier werden alle Felder der aktuellen Zeile durchgelaufen und
        // in der List gespeichert.
        for(String aktSpalte : spalten) {
          elemente.add(aktSpalte);
        } // Ende Felder in Liste speichern
      } // Ende zeilenweise Lesen
    } catch (IOException e) {
      e.printStackTrace();
    } // Ende catch-Block für Datei einlesen
     
    /*
    Hier hast du in "elemente" nun alle Felder der Datei stehen
    und kannst damit weiterarbeiten
    */


    // Edit:
    Zitat Zitat von vfl_freak Beitrag anzeigen
    Code java:
    1
    
    Split("\\,")  // nur ein 't' und Backslashes !
    Das "Split" gehört kleingeschrieben und die Backslashes komplett raus. Komma hat bei einem RegEx keine weitere Bedeutung und wird als normales Zeichen angenommen.
    => split(",");

    Gruß
    BK
    Geändert von Bratkartoffel (10.09.10 um 12:52 Uhr)
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"

  11. #11
    Elmu Tutorials.de Gastzugang
    java.util.StringTokenzier st = new java.util.StringTokenuzer(line, ",");

    while(st.hasMoreTokens() ) {
    list.add(st.nextToken());
    }


    Der trennt den String immer beim ',' ab und das Zeichen wird auch nich mehr mit übergeben.
     

  12. #12
    Elmu Tutorials.de Gastzugang
    In der ersten Zeile hab ich nen Fehler reingebaut... es muss natürlich

    java.util.StringTokenzier st = new java.util.StringTokenizer(line, ",");

    heißen.
     

  13. #13
    Avatar von Bratkartoffel
    Bratkartoffel Bratkartoffel ist offline gebratene Kartoffel
    tutorials.de Premium-User
    Registriert seit
    Jun 2007
    Ort
    Passau (Niederbayern)
    Beiträge
    1.394
    Hi Elmu,

    ob man es nun mit dem StrongTokenizer macht, oder per split ist meiner Meinung nach Geschmackssache. Deine Aussage, dass das Trennzeichen nicht mit übergeben wird trifft auch auf die String.split() zu, hier wird das Trennzeichen auch aus dem Ergebnis gelöscht.

    Gruß
    BK
     
    Über eine gute Bewertung freut sich jeder ;)
    Bitte erledigte Threads als "Erledigt" markieren.

    "Though a program be but three lines long, someday it will have to be maintained.''
    -- Geoffrey James, "The Tao of Programming"