Announcement

Collapse
No announcement yet.

Nur erste Zeile wird gelesen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Nur erste Zeile wird gelesen

    Hallo Leute, ich habe kürzlich wieder einen Fehler in meinem Prog gefunden, dass ich zu beheben versuche, jedoch komme ich einfach auf keine lösung. Es geht wieder um das Projekt in der Bücherverwaltung. Wenn ich versuche die Daten zu laden, lädt er nur die erste Zeile der Textdatei und ansonsten springt das Programm in die rot markierte catch-Klausel. Hier nochmal der Quellcode:
    Code:
    	// Methode zum laden der Daten
    	public static void loadData() throws FileNotFoundException
    	{
    		id = 0;
            load.addActionListener( new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    JFileChooser loadChooser	=	new JFileChooser();
                    FileNameExtensionFilter filter	=	new FileNameExtensionFilter("TXT","txt");
                    loadChooser.setAcceptAllFileFilterUsed(false);
                    loadChooser.setMultiSelectionEnabled(false);
                    loadChooser.addChoosableFileFilter(filter);
                    loadChooser.setDialogTitle("Wähle eine Datei aus");
                    int returnVal	=	loadChooser.showDialog(null,"Öffnen");
                    if(returnVal == JFileChooser.APPROVE_OPTION)
                        {
                    	((DefaultTableModel)table.getModel()).setRowCount(0);
                    	File file = loadChooser.getSelectedFile();
                    	
                    	try
                    	{
                    		
                    		FileReader fr=new FileReader(file.getAbsolutePath());
                    		BufferedReader br=new BufferedReader(fr);
                    		String row;
                   
                    		while((row=br.readLine())!=null)
                    		{
                    			String[] index=row.split("#");
                    			defModel.addRow(new Object[]
                    			                           {
                    										index[0],index[1],index[2],index[3],index[4],index[5],
                    			                           });
                    		}
                    		fr.close();
                    	}
                    	catch(Exception e1)
                    	{
                   			System.out.println("Fehler beim Lesen aufgetreten: "+e1.getMessage());
                    	}
                        }
                	id = table.getRowCount();
                	}
            	});
    
    		}
    Im Anhang ist noch die Textdatei, die ich laden möchte, vllt kann man damit den Fehler genauer analysieren. Nebenbei, ich habe 7 Spalten, die ersten 6 sind Strings und die letzte ist eine Checkbox-Zelle (deshalb steht false in der letzten Spalte). Seperator ist immer noch #, wie man dem Quellcode entnehmen kann.

    So nun ganz konkret: Wieso lädt das Prog. nur die erste Zeile und die anderen nicht?

    Ich wäre wirklich sehr froh, wenn mir jemand bei diesem kniffligen Problem helfen könnte. Vielen Dank im vorraus!

    Mit freundlichen Grüßen

    e-styles
    Attached Files

  • #2
    Der Fehler dürfte sein, dass die Datei korrupt ist:

    1#Illuminati#Dan Brown#2003#3404148665#Im Kernforschungszentrum CERN bei Genf brennt jemand
    dem Priester und Physiker Leonardo Vetra das Zeichen der
    Illuminati auf die Brust und tötet ihn. Robert Langdon, ein
    Harvardprofessor für Semiotik, macht sich zusammen mit der
    Tochter des Toten auf die Suche nach dem Mörder und den Hintermännern.#false#


    hier wird der Text offenbar auf mehrere Zeilen geteilt. Das geht nach deiner Logik zum einlesen nicht
    Christian

    Comment


    • #3
      Wow, einfach nur klasse, lobenswert für eine so schnelle Antwort, habs hinbekommen, dein Tip war richtig. Aber jetzt hab ich noch ein Anliegen, und zwar ist eine JTextArea dabei, was es nicht verhindert, dass Zeilenumbrüche entstehen, kann ich dieses Problem irgendwie umgehen?

      vielen Dank für die sofortige Hilfe Christian!

      Comment


      • #4
        Versuche was

        setLineWrap

        setWrapStyleWord

        ergeben. Ggf. müssen alle Zeilenumbrüche beim auslesen durch einen anderen Wert ersetzt werden umd beim einlesen wiederhergestellt werden.

        Dazu dient http://download.oracle.com/javase/1....a.lang.String), java.lang.String)


        Christian

        Comment


        • #5
          Super, hat geklappt!

          Natürlich gebührt dir wieder ein großer Dank Christian .
          ich habe es jetzt so realisiert, dass ich die Methode ReplaceAll() benutze, die alle Zeilenumbrüche mit einem Leerzeichen ersetzt.

          Danke für deine Hilfe, ich denk mal jetzt steht dem Erfolg des Projektes nichts mehr im Weg :-)

          mfg

          e-styles

          Comment

          Working...
          X