litesoft
@ 958
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
// This Source Code is in the Public Domain per: http://unlicense.org package org.litesoft.server.file; import org.litesoft.commonfoundation.exceptions.*; import org.litesoft.commonfoundation.iterators.*; import org.litesoft.util.*; import java.io.*; /** * An Iterator representing the results of repeatedly calling readLine * on a BufferedReader. The underlying data source is any Reader.<p> * * @author George Smith * @version 1.0 7/28/01 */ public class LineReaderIterator extends Iterators.AbstractReadOnly<String> { /** * Construct an Iterator representing the results of repeatedly * calling readLine on a BufferedReader.<p> * * @param pReader the underlying data source (null OK). */ public LineReaderIterator( Reader pReader ) { zReader = Utils.getBufferedReader( pReader ); } private BufferedReader zReader; private String zNextLine = null; private boolean loadNextLine() { if ( zReader == null ) { return false; } try { if ( null != (zNextLine = zReader.readLine()) ) { return true; } } catch ( IOException e ) { throw new FileSystemException( e ); } closeReader(); return false; } private void closeReader() { try { zReader.close(); } catch ( IOException ignore ) { // ignoring... } zReader = null; } /** * If and when the GC runs, and this object is about to be reclaimed, then * this method is called, and if the Reader is still open, it is closed. */ @Override public void finalize() throws Throwable { if ( zReader != null ) { closeReader(); } super.finalize(); } /** * Returns <tt>true</tt>/<tt>false</tt>, if there is another line to be * had from next().<p> * <p/> * Note: The management of the underlying Reader is handled by this method. * The first time hasNext() returns false the Reader is closed, and if * the Reader is closed, hasNext() returns false.<p> * * @return <tt>true</tt>/<tt>false</tt>, if there is another line to be * had from next().<p> * * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/Util/Iterator.html#hasNext()">java.util.Iterator#hasNext()</a> * @see #next() */ @Override public boolean hasNext() { return ((zNextLine != null) || loadNextLine()); } /** * Returns the next element in the interation. * * @see <a href="http://java.sun.com/j2se/1.3/docs/api/java/lang/Util/Iterator.html#next()">java.util.Iterator#next()</a> */ @Override public String next() { if ( !hasNext() ) { return super.next(); // throws Exception } String rv = zNextLine; zNextLine = null; return rv; } /** * Returns a debug/human friendly String that represents this.<p> * * @return A String representation of this. */ @Override public String toString() { return "LineReaderIterator: " + (hasNext() ? "has More" : "at End"); } } |
Commits for litesoft/trunk/Java/core/Server/src/org/litesoft/server/file/LineReaderIterator.java
Revision | Author | Commited | Message |
---|---|---|---|
958 Diff | GeorgeS | Mon 14 Jul, 2014 15:29:35 +0000 | Embrace OSS code bases. |
948 Diff | GeorgeS | Sat 07 Jun, 2014 23:42:39 +0000 | Jusefuls Formatter Updated to New Code Format |
947 Diff | GeorgeS | Fri 06 Jun, 2014 23:36:56 +0000 | Correct Spelling of package! |
939 Diff | GeorgeS | Mon 02 Jun, 2014 21:30:31 +0000 | Extracting commonfoundation |
151 Diff | GeorgeS | Thu 17 Mar, 2011 04:16:22 +0000 | |
50 Diff | GeorgeS | Tue 13 Apr, 2010 11:51:38 +0000 | |
49 Diff | GeorgeS | Mon 12 Apr, 2010 02:59:10 +0000 | License Text |
24 Diff | GeorgeS | Wed 24 Feb, 2010 01:51:38 +0000 | |
2 | GeorgeS | Sun 07 Feb, 2010 12:50:58 +0000 |