it.unimi.dsi.io
Class FileLinesCollection

java.lang.Object
  extended by java.util.AbstractCollection<MutableString>
      extended by it.unimi.dsi.io.FileLinesCollection
All Implemented Interfaces:
java.lang.Iterable<MutableString>, java.util.Collection<MutableString>

public class FileLinesCollection
extends java.util.AbstractCollection<MutableString>

A wrapper exhibiting the lines of a file as a Collection.

Warning: the lines returned by iterators generated by instances of this class are not cacheable. The returned value is a MutableString instance that is reused at each call, and that is modified by a call to hasNext(). Thus, for instance,

    ObjectIterators.unwrap( fileLinesColletion.iterator() );
 
will not give the expected results. Use allLines() to get the list of all lines (again, under the form of compact MutableStrings). Note also that toString() will return a single string containing all file lines separated by the string associated to the system property line.separator.

An instance of this class allows to access the lines of a file as a Collection. Using direct access is strongly discouraged (it will require a full scan of the file), but the iterator() can be fruitfully used to scan the file, and can be called any number of times, as it opens an independent input stream at each call. For the same reason, the returned iterator type (FileLinesCollection.FileLinesIterator) is Closeable, and should be closed after usage.

Using a suitable constructor, it is possible to specify that the file is compresse in gzip format (in this case, it will be opened using a GZIPInputStream).

Note that the first call to size() will require a full file scan.

Since:
0.9.2
Author:
Sebastiano Vigna

Nested Class Summary
static class FileLinesCollection.FileLinesIterator
          An iterator over the lines of a FileLinesCollection.
 
Constructor Summary
FileLinesCollection(java.lang.CharSequence filename, java.lang.String encoding)
          Creates a file-lines collection for the specified filename with the specified encoding.
FileLinesCollection(java.lang.CharSequence filename, java.lang.String encoding, boolean zipped)
          Creates a file-lines collection for the specified filename with the specified encoding, optionally assuming that the file is compressed using gzip format.
 
Method Summary
 java.util.List<MutableString> allLines()
          Returns all lines of the file wrapped by this file-lines collection.
 FileLinesCollection.FileLinesIterator iterator()
           
 int size()
           
 java.lang.String toString()
           
 
Methods inherited from class java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, remove, removeAll, retainAll, toArray, toArray
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Collection
equals, hashCode
 

Constructor Detail

FileLinesCollection

public FileLinesCollection(java.lang.CharSequence filename,
                           java.lang.String encoding)
Creates a file-lines collection for the specified filename with the specified encoding.

Parameters:
filename - a filename.
encoding - an encoding.

FileLinesCollection

public FileLinesCollection(java.lang.CharSequence filename,
                           java.lang.String encoding,
                           boolean zipped)
Creates a file-lines collection for the specified filename with the specified encoding, optionally assuming that the file is compressed using gzip format.

Parameters:
filename - a filename.
encoding - an encoding.
zipped - whether filename is zipped.
Method Detail

iterator

public FileLinesCollection.FileLinesIterator iterator()
Specified by:
iterator in interface java.lang.Iterable<MutableString>
Specified by:
iterator in interface java.util.Collection<MutableString>
Specified by:
iterator in class java.util.AbstractCollection<MutableString>

size

public int size()
Specified by:
size in interface java.util.Collection<MutableString>
Specified by:
size in class java.util.AbstractCollection<MutableString>

allLines

public java.util.List<MutableString> allLines()
Returns all lines of the file wrapped by this file-lines collection.

Returns:
all lines of the file wrapped by this file-lines collection.

toString

public java.lang.String toString()
Overrides:
toString in class java.util.AbstractCollection<MutableString>