Java, need a while loop to reach eof. i.e.while !eof, keep parsing

john stamos picture john stamos · Jun 5, 2013 · Viewed 19k times · Source

I currently have a working parser. It parses a file once(not what I want it to do) and then outputs parsed data into a file. I need it to keep parsing and appending to the same output file until the end of the input file. Looks something like this.

try {
// my code parsing the data and appending to eof of output. (works)
}
catch (EOFException eof){
}

Everything is done except the while loop. It only parses once when I need it to keep parsing. I'm looking for a while loop function to reach eof.

I'm also using a DataInputStream. Is there some sort of DataInputStream.hasNext function?

DataInputStream dis = new DataInputStream(new FileInputStream(inFile));
i.e. dis.read();

.

//Need a while !eof while loop
try {
// my code parsing the data and appending to eof of output. (works)
}
catch (EOFException eof){
}

Answer

FThompson picture FThompson · Jun 5, 2013

Warning: This answer is incorrect. See the comments for explanation.


Instead of looping until an EOFException is thrown, you could take a much cleaner approach, and use available().

DataInputStream dis = new DataInputStream(new FileInputStream(inFile));
while (dis.available() > 0) {
    // read and use data
}

Alternatively, if you choose to take the EOF approach, you would want to set a boolean upon the exception being caught, and use that boolean in your loop, but I do not recommend it:

DataInputStream dis = new DataInputStream(new FileInputStream(inFile));
boolean eof = false;
while (!eof) {
    try {
        // read and use data
    } catch (EOFException e) {
        eof = true;
    }
}