I've written a method that checks if my string is in a file, but eclipse gives dead code warning. Here is my method:
private boolean KeyPresent(String key){
try{
BufferedReader fileReader=new BufferedReader(new FileReader(keyPath));
while(true){
String s=fileReader.readLine();
if(s.equals(key)){
fileReader.close();
return true;
}else if(s==null){
fileReader.close();
return false;
}
}
}catch(IOException e){
e.getStackTrace()
return false;
}
}
The else if(s==null) part is the source of the warning. Why?
If you can't find any matching result (and coming outputs are all null), return false. I think it is OK. What is wrong?
And one more question. Which is better to use?
String s;
while(true){
s="New Value";
....
}
or
while(true){
String s="new value";
...
}
I think garbage collectors consume system resources, so the first one is better. However, I see more examples on the second one. Which one would you use?
Look at the whole if/else:
if (s.equals(key)) {
...
} else if (s == null) {
...
}
If s is null, then s.equals(key) will have thrown a NullPointerException - so you'll never get into the second if block.
You should use a try-with-resources block anyway, and personally I wouldn't catch the IOException either... just let it bubble up:
private boolean keyPresent(String key) throws IOException {
try (BufferedReader reader = new BufferedReader(new FileReader(keyPath))) {
String line;
while ((line = reader.readLine()) != null) {
if (line.equals(key)) {
return true;
}
}
return false;
}
}
Note that there's no garbage collection difference here; declaring the variable before the loop just means you can assign the value within the while condition.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With