Class FileLinesMutableStringIterable

java.lang.Object
it.unimi.dsi.io.FileLinesMutableStringIterable
All Implemented Interfaces:
Size64, Iterable<MutableString>

public class FileLinesMutableStringIterable
extends Object
implements Iterable<MutableString>, Size64
A wrapper exhibiting the lines of a file as an Iterable of mutable strings.

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(fileLinesMutableStringIterable.iterator());
 
will not give the expected results. Use allLines() or allLinesBig() for that purpose.

The result of a call to iterator() can be used to scan the file; each call will open an independent input stream. The returned iterator type (FileLinesIterator) is Closeable, and should be closed after usage. Exhausted iterators, however, will be closed automagically.

Using a suitable constructor it is possible to specify a decompression class, which must extend InputStream and provide a constructor accepting an InputStream (e.g., GZIPInputStream if the file is compressed in gzip format).

Convenience static methods makes it possible to build on the fly an iterator over an input stream using the same conventions.

This class implements size64(), which will return the number of lines of the file, computed with a full scan at the first invocation. However, it is also possible to specify at construction time the number of lines in the file to skip the first scan. It is responsibility of the caller that the specified size and the actual number of lines in the file do match.

Since:
2.6.17
Author:
Sebastiano Vigna
  • Constructor Details

    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename)
      Creates a file-lines iterable for the specified filename using the platform encoding.
      Parameters:
      filename - a filename.
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, long size)
      Creates a file-lines iterable for the specified filename and size using the platform encoding.
      Parameters:
      filename - a filename.
      size - the number of lines in the file.
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, Charset encoding)
      Creates a file-lines iterable for the specified filename using the specified encoding.
      Parameters:
      filename - a filename.
      encoding - an encoding.
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, long size, Charset encoding)
      Creates a file-lines iterable for the specified filename and size using the specified encoding.
      Parameters:
      filename - a filename.
      size - the number of lines in the file.
      encoding - an encoding.
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, String encoding)
      Creates a file-lines iterable for the specified filename using the specified encoding.
      Parameters:
      filename - a filename.
      encoding - an encoding.
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, long size, String encoding)
      Creates a file-lines iterable for the specified filename and size using the specified encoding.
      Parameters:
      filename - a filename.
      size - the number of lines in the file.
      encoding - an encoding.
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, Class<? extends InputStream> decompressor) throws NoSuchMethodException, SecurityException
      Creates a file-lines iterable for the specified filename using the platform encoding, optionally assuming that the file is compressed.
      Parameters:
      filename - a filename.
      decompressor - a class extending InputStream that will be used as a decompressor, or null for no decompression.
      Throws:
      NoSuchMethodException
      SecurityException
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, long size, Class<? extends InputStream> decompressor) throws NoSuchMethodException, SecurityException
      Creates a file-lines iterable for the specified filename and size using the platform encoding, optionally assuming that the file is compressed.
      Parameters:
      filename - a filename.
      size - the number of lines in the file.
      decompressor - a class extending InputStream that will be used as a decompressor, or null for no decompression.
      Throws:
      NoSuchMethodException
      SecurityException
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, Charset encoding, Class<? extends InputStream> decompressor) throws NoSuchMethodException, SecurityException
      Creates a file-lines iterable for the specified filename with the specified encoding, optionally assuming that the file is compressed.
      Parameters:
      filename - a filename.
      encoding - an encoding.
      decompressor - a class extending InputStream that will be used as a decompressor, or null for no decompression.
      Throws:
      NoSuchMethodException
      SecurityException
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, String encoding, Class<? extends InputStream> decompressor) throws NoSuchMethodException, SecurityException
      Creates a file-lines iterable for the specified filename with the specified encoding, optionally assuming that the file is compressed.
      Parameters:
      filename - a filename.
      encoding - an encoding.
      decompressor - a class extending InputStream that will be used as a decompressor, or null for no decompression.
      Throws:
      NoSuchMethodException
      SecurityException
    • FileLinesMutableStringIterable

      public FileLinesMutableStringIterable​(String filename, long size, Charset encoding, Class<? extends InputStream> decompressor) throws NoSuchMethodException, SecurityException
      Creates a file-lines iterable for the specified filename and size with the specified encoding, optionally assuming that the file is compressed.
      Parameters:
      filename - a filename.
      size - the number of lines in the file.
      encoding - an encoding.
      decompressor - a class extending InputStream that will be used as a decompressor, or null for no decompression.
      Throws:
      NoSuchMethodException
      SecurityException
  • Method Details