LineIterable based on BufferedReader
This commit is contained in:
parent
f510fc7f5d
commit
1c2cfb63cb
1 changed files with 63 additions and 0 deletions
63
src/ch/kousz/adrian/util/LineIterable.java
Normal file
63
src/ch/kousz/adrian/util/LineIterable.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue