code: public final static Observable<String> tailTextFile(File file, long startPosition,
              long sampleTimeMs, Charset charset) {
          return toLines(tailFile(file, startPosition, sampleTimeMs, DEFAULT_MAX_BYTES_PER_EMISSION),
                  charset);
      }
docs: Returns an {@link Observable} that uses NIO {@link WatchService} (and a
  dedicated thread) to push modified events to an observable that reads and
  reports new lines to a subscriber. The NIO WatchService MODIFY and
  OVERFLOW events are sampled according to <code>sampleTimeMs</code> so
  that lots of discrete activity on a file (for example a log file with
  very frequent entries) does not prompt an inordinate number of file reads
  to pick up changes. File create events are not sampled and are always
  passed through.
  
  @param file
  the file to tail
  @param startPosition
  start tailing file at position in bytes
  @param sampleTimeMs
  sample time in millis for MODIFY and OVERFLOW events
  @param charset
  the character set to use to decode the bytes to a string
  @return observable of strings