LineIterable based on BufferedReader

This commit is contained in:
Adrian 2015-11-10 15:08:41 +01:00
parent f510fc7f5d
commit 1c2cfb63cb

View file

@ -0,0 +1,63 @@
package ch.kousz.adrian.util;
import java.io.BufferedReader;
import java.io.IOException;
public class LineIterable
implements Iterable<String>
{
private final BufferedReader rdr;
public LineIterable(BufferedReader rdr)
{
this.rdr = rdr;
}
@Override
public java.util.Iterator<String> iterator()
{
return new LineIterable.Iterator(this);
}
private static class Iterator
implements java.util.Iterator<String>
{
private final BufferedReader rdr;
private String next;
public Iterator(LineIterable gen)
{
this.rdr = gen.rdr;
readNext();
}
@Override
public boolean hasNext()
{
return next != null;
}
@Override
public String next()
{
String result = next;
readNext();
return result;
}
@Override
public void remove()
{
throw new UnsupportedOperationException();
}
private void readNext()
{
try {
next = rdr.readLine();
} catch (IOException ex) {
throw Throwables.sneakyThrow(ex);
}
}
}
}