Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte in einer .txt Datei einen String finden und habe 2 Funktionen. Die eine liefert einen boolean Wert, ob der String gefunden wurde oder nicht. Die 2. Funktion liefert die Zeile, in der der Wert steht (bzw. sollte den liefertn, tut sie aber nicht.)
Java:
File file = new File("test.txt");
FileReader freader = new FileReader(file);
BufferedReader reader = new BufferedReader(freader);
public int StringZeile(String s){
int i = 0;
String line;
while(true)
{
try{
line = reader.readLine();
if(line != null)
{
if(line.indexOf(s) > -1)
{
return i;
}
i++;
}
else
return -1;
} catch(IOException e){
e.printStackTrace();
}
}
}
public boolean Stringvorhanden(String s){
String line;
while(true)
{
try{
line = reader.readLine();
if(line != null)
{
if(line.indexOf(s) > -1)
{
return true;
}
}
else
break;
} catch(IOException e){
e.printStackTrace();
}
}
return false;
}
Komischerweise liefert die 2. Funktion true, die 1. jedoch -1. Kann mir dabei irgendwer helfen?
Bekomme nun viele Fehler. Muss man Files auch schließen?
Code:
java.io.FileNotFoundException: test.txt (Too many open files)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at java.io.FileReader.<init>(FileReader.java:72)
at Interface.access$100(Interface.java:13)
at Interface$3.actionPerformed(Interface.java:73)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6505)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
at java.awt.Component.processEvent(Component.java:6270)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4861)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
at java.awt.Container.dispatchEventImpl(Container.java:2273)
at java.awt.Window.dispatchEventImpl(Window.java:2719)
at java.awt.Component.dispatchEvent(Component.java:4687)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:696)
at java.awt.EventQueue$4.run(EventQueue.java:694)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Hat es einen Grund, warum du in einer while(true) Endlosschleife in jedem Durchlauf neue Streams erzeugst?
Diese werden für den Fall dass die erste if-Bedingung zutrifft und die zweite nicht, nicht geschlossen. Dadurch erzeugst du dir unzählig viele offene Streams.