Input/Output OpenfileReader

Pommes9485

Bekanntes Mitglied
Hallo,
ich habe folgendes Problem, ich benutze BufferedReader um eine .txt Datei einzulesen, ich benutze dazu auch Try-Catch, aber immer wenn ich den fehlerlos Compilierten Code starte, gibt er mir die Fehlermeldung aus, welche ich bei Try und catch angegeben habe.
Folgendes steht in Try:
Java:
 public Bilderstellen(String datei, String datei3)
  {  try{
     datei2=datei;
     datei4=datei3;
    while(an)
    {

    BufferedReader read = new BufferedReader(new FileReader(datei2));

    durchsuchen(String.valueOf(read.readLine().charAt(i)));
    buchstabe=String.valueOf(read.readLine().charAt(i));
    }

    kurz=line2;

    farbe();
    }

    catch (Exception e){
      System.out.println("PANIK");
    }
  }

Er gibt mir halt immer Panik aus, datei2 hat den Wert eines OpenFilechoosers, der Pfad wird auch in einem Textfield ausgegebn und stimmt auch.
Wenn ich Haltepunkte setzte, bekomme ich ich "Keine Rückmeldung".
Was mache ich noch falsch ?
Ich kann natürlich auch bei Bedarf den restlichen Code posten, allerdings ist der sehr unschön geschrieben ;)
Mfg Marvin
 
Zuletzt bearbeitet von einem Moderator:
G

Gastredner

Gast
Die eigentliche Fehlermeldung wäre wohl sinnvoller als mehr Code. Es gibt dort verschiedene Fehlerquellen: Beim Öffnen des FileReaders kann es zu einer FileNotFoundException kommen, readLine() kann null zurückgeben, charAt(i) kann eine IndexOutOfBoundsException werfen (wo ist i überhaupt definiert?),...
Generell sieht der Code - wenn ich das so sagen darf - ein wenig wirsch aus. Du schließt die geöffneten Reader nicht, du liest jeweils die ersten beiden Zeilen aus und überprüfst nicht, ob es überhaupt soviele Zeilen in der Date gab (oder ob die Datei überhaupt existiert), du verwendest nichtssagende Variablennamen (datei, datei2, datei3), etc.
 
Zuletzt bearbeitet von einem Moderator:

jgh

Top Contributor
bevor du "Panik" schreibst^^...

Java:
 catch (Exception e){
      System.out.println("PANIK");

e.printStackTrace();

    }

dann zeig mal deine Exception
 
G

Gast2

Gast
Nicht:
Java:
    }catch (Exception e){
      System.out.println("PANIK");
    }
Sondern:
Java:
    }catch (Exception e){
      e.printStackTrace();
    }

Dann den StackTrace lesen und sich vor den Kopf hauen oder hier posten. Dann gibt es Hilfe, so kann damit keiner was anfangen.
 

Pommes9485

Bekanntes Mitglied
Danke, ich habe es da jetzt eingefügt und bekomme folgende Nachricht :
java.lang.StringIndexOutOfBoundsException: String index out of range: 1
at java.lang.String.charAt(String.java:686)
at Bilderstellen.<init>(Bilderstellen.java:42)
at GUI.jButton3_ActionPerformed(GUI.java:111)
at GUI$2.actionPerformed(GUI.java:70)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6028)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4630)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4574)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
at java.awt.Container.dispatchEventImpl(Container.java:2085)
at java.awt.Window.dispatchEventImpl(Window.java:2478)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Ich denke, das er mit einer Array nicht klar kommt oder ?
 
F

Firephoenix

Gast
Hi,
könnte an dem i liegen.
da ein String ein Array aus chars ist musst du von 0 bis länge-1 zählen
Gruß
 
G

Gast2

Gast
Ich hab keine Ahnung was du hier machen möchtest:

Java:
durchsuchen(String.valueOf(read.readLine().charAt(i)));
buchstabe=String.valueOf(read.readLine().charAt(i));

Aber ich gehe mal davon aus das du nicht weißt das read.readLine() den Pointer weitersetzt, also in der du mit den beiden Zeilen zwei Zeilen deiner Datei ließt...

Wenn du es etwas anders schreibst kannst du es deutlich leichter debuggen:
Java:
String line = read.readLine();
System.out.println("Zeile: "+line);
System.out.println("i: "+i);
char c = line.charAt(i);
String s = String.valueOf(c)
System.out.println("String s: "+s);
durchsuchen(s);
buchstabe =  s;

Erläuter doch mal was du überhaupt vorhast? Möchtest du hier ein oder zwei Zeilen aus deiner Datei verarbeiten?
 
G

Gastredner

Gast
Ich denke, das er mit einer Array nicht klar kommt oder ?
Du versuchst auf einen Index in einem String zuzugreifen, der nicht existiert. Will heißen: Du versuchst in dem String "ABC" die vierte Stelle auszulesen, welche ja nicht existiert.
Beschreibe uns doch erst einmal, was du überhaupt erreichen willst.
 

Neue Themen


Oben