1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Java ME: Durch txt-Datei neue txt-Datei öffnen

Dieses Thema im Forum "Java" wurde erstellt von Flopro, 7. April 2012.

  1. Flopro

    Flopro Grünschnabel

    Hi Leute,

    ich habe ein kleines Problem und wäre um eure Hilfe sehr dankbar.

    Mein Programm soll aufgrund der in einer txt-Datei gespeicherten Wörter eine Liste erstellen -bis hierher funktioniert es - und durch auswählen eines Elementes eine neue Liste aus einer 2. txt-Datei erstellen, wobei der Name der 2. txt-Datei der des ausgewählten Elements ist.

    Das Problem ist jedoch, dass zwar der Text des ausgewählten Elementes als String ausgegeben und verglichen werden kann, jedoch sobald es als Pfad verwendet wird, nicht mehr funktioniert.

    Würde mich freuen, wenn mir jemand weiterhelfen kann. Vielen Dank
    Falls jemand genauere Angaben braucht einfach fragen.
    Flo

    P.S. Hier unten ist mein Quellcode.

    Code (Text):
    1.  
    2. import java.io.*;
    3. import javax.microedition.midlet.MIDlet;
    4. import javax.microedition.lcdui.*;
    5.  
    6. public class Sportapp extends MIDlet implements CommandListener
    7. {
    8.     private Display display;
    9.     private List Liste;
    10.     private String name;
    11.  
    12.     public Sportapp()
    13.     {
    14.         display = Display.getDisplay(this);
    15.        
    16.     }
    17.  
    18.     public void startApp()
    19.     {
    20.         loadlist("Auswahl");        
    21.     }
    22.  
    23.     public void pauseApp()
    24.     {
    25.  
    26.     }
    27.  
    28.     public void destroyApp(boolean unconditional)
    29.     {
    30.  
    31.     }
    32.  
    33.     public void commandAction(Command command, Displayable displayable){
    34.         if (command == List.SELECT_COMMAND) {
    35.             loadlist(Liste.getString(Liste.getSelectedIndex()));
    36.         }
    37.     }
    38.  
    39.    
    40.  
    41.     public void loadlist(String name){
    42.         DataInputStream dis = new DataInputStream(getClass().getResourceAsStream("/"+name+".txt"));
    43.         StringBuffer sb = new StringBuffer();
    44.         Liste = new List(name, List.IMPLICIT);
    45.         Liste.setCommandListener(this);
    46.         int i=0 ;
    47.        
    48.         try{
    49.             while ((i = dis.read()) > -1)
    50.             {
    51.                 char ch = (char)i;
    52.                 if (ch == '\n')
    53.                 {   Liste.append(sb.toString(),null);
    54.                    
    55.                     sb.delete(0,sb.length());
    56.                  
    57.                 }      
    58.                 else
    59.                     sb.append(ch);
    60.             }
    61.  
    62.             dis.close();
    63.  
    64.         }
    65.         catch (IOException e) {
    66.  
    67.         }
    68.         display.setCurrent(Liste);      
    69.     }
    70. }
    71.  
    72.  
    Zuletzt bearbeitet: 19. April 2012
  2. cc1990

    cc1990 Grünschnabel

    Hi Flopro,
    hast du dir mal den Pfad ausgeben lassen? Vielleicht wird der Pfad nicht richtig zusammen gebaut.
    Was auch noch sein kann ist, dass im String name ein Leerzeichen steht also hinter dem Element.
  3. Flopro

    Flopro Grünschnabel

    Hi cc1990,
    vielen Dank, dass du mich darauf aufmerksam gemacht hast, dass es an tippfehlern in meiner txt-Datei liegen könnte. Jedoch waren dort keine Fehler und wenn ich mir die Zusammensetzung als String ausgeben lasse, erhalte ich den richtigen pfad.
    Also leider keine Lösung des Problems.
  4. Flopro

    Flopro Grünschnabel

    Hi Leute,
    ich habe mich nochmals mit dem Vergleich, welchen ich oben beschrieben habe auseinander gesetzt. Auch diesen bringe ich nicht mehr zustande. D.h., dass wenn ich den Text, aus der Liste mir ausgeben lasse und vergleiche mit dem was zu sehen ist, dann behauptet Java, dass dies unterschiedlich sei, obwohl für das Auge das selbe dasteht.
    Gruß Flo
  5. genodeftest

    genodeftest Erfahrenes Mitglied

    Vergleichst du mit '==' ? Das vergleicht nur Referenzen, d.h. ist nur true, wenn beide Referenzen auf das gleiche Objekt weisen. Generell ist meistens .equals() besser, dazu muss aber die .equals-Methode in den Klassen des Objekts überschrieben sein.
  6. Flopro

    Flopro Grünschnabel

    Ich mache das mit ".equals". also sollte es funktionieren.
    Aber vielen Dank für die Erinnerung, da es bei mir hieran schon öfters gescheitert ist.

    Hier meine überschriebene CommandAction, mit der ich den Vergleich ausführe:

    Code (Text):
    1.  
    2.     public void commandAction(Command command, Displayable displayable){
    3.         if (Liste.getString(Liste.getSelectedIndex()).equals("Blau")) {
    4.             Alert alert =new Alert(Liste.getString(Liste.getSelectedIndex()));
    5.             display.setCurrent(alert);    
    6.         }
    7.     }
    8.  
  7. genodeftest

    genodeftest Erfahrenes Mitglied

    was macht .getString()? Wie wäre es mit einer Methode .getSelectedValue() oder .getSelectedString()?
  8. Flopro

    Flopro Grünschnabel

  9. Funresort

    Funresort Erfahrenes Mitglied

    Ist zwar nicht ganz so schön, aber wenn du es mit nem String und nem Filereader machst müsste das ganze Funktionieren, wenn ich Zeit hab schreib ich den Code nacher noch zusammen und poste ihn.
  10. Flopro

    Flopro Grünschnabel

    Servus Funresort.

    Wenn deine Variante funktioniert, dann wäre das echt stark, dann müsste ich nur die entsprechenden io-Klassen aus Java SE in mein Java ME Projekt kopieren, dann müsste Java ME auch damit umgehen können.
    Wäre sehr cool, wenn du mir den Code schicken könntest, dann müsste ich mich nicht so lange mit den unbekannten Klassen auseinandersetzen.

    Flo
  11. Funresort

    Funresort Erfahrenes Mitglied

    Code (Java):
    1.  
    2. import java.io.BufferedReader;
    3. import java.io.File;
    4. import java.io.FileReader;
    5. import java.util.ArrayList;
    6.  
    7. class Test {
    8.     ArrayList<String> stringList;
    9.  
    10.     public Test(String s) {
    11.         try {
    12.  
    13.             stringList = new ArrayList<String>();
    14.  
    15.             File file = new File(s);
    16.             BufferedReader reader = new BufferedReader(new FileReader(file));
    17.             String read = null;
    18.             while ((read = reader.readLine()) != null) {
    19.  
    20.                 stringList.add(read);
    21.  
    22.             }
    23.  
    24.         } catch (Exception e) {
    25.             e.printStackTrace();
    26.         }
    27.     }
    28.  
    29.     public ArrayList<String> getList() {
    30.         return stringList;
    31.     }
    32. }
    33.  
    Du musst die ArrayList nur auslesen und in deine Liste schmeißen, müsste klappen.

Diese Seite empfehlen