public final static Observable<byte[]> tailFile(File file, long startPosition,
            long sampleTimeMs, int chunkSize) {
    """
	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 sequences of bytes to a subscriber. The NIO
	{@link WatchService} 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.
	
	@param file
	the file to tail
	@param startPosition
	start tailing file at position in bytes
	@param sampleTimeMs
	sample time in millis
	@param chunkSize
	max array size of each element emitted by the Observable. Is
	also used as the buffer size for reading from the file. Try
	{@link FileObservable#DEFAULT_MAX_BYTES_PER_EMISSION} if you
	don't know what to put here.
	@return observable of byte arrays
    """
        Preconditions.checkNotNull(file);
        Observable<Object> events = from(file, StandardWatchEventKinds.ENTRY_CREATE,
                StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.OVERFLOW)
                        // don't care about the event details, just that there
                        // is one
                        .cast(Object.class)
                        // get lines once on subscription so we tail the lines
                        // in the file at startup
                        .startWith(new Object());
        return tailFile(file, startPosition, sampleTimeMs, chunkSize, events);
    }
public final static Observable<byte[]> tailFile(File file, long startPosition,
            long sampleTimeMs, int chunkSize) {
        Preconditions.checkNotNull(file);
        Observable<Object> events = from(file, StandardWatchEventKinds.ENTRY_CREATE,
                StandardWatchEventKinds.ENTRY_MODIFY, StandardWatchEventKinds.OVERFLOW)
                        // don't care about the event details, just that there
                        // is one
                        .cast(Object.class)
                        // get lines once on subscription so we tail the lines
                        // in the file at startup
                        .startWith(new Object());
        return tailFile(file, startPosition, sampleTimeMs, chunkSize, events);
    }
public final static Observable < byte [ ] > tailFile ( File file , long startPosition , long sampleTimeMs , int chunkSize ) { Preconditions . checkNotNull ( file ) ; Observable < Object > events = from ( file , StandardWatchEventKinds . ENTRY_CREATE , StandardWatchEventKinds . ENTRY_MODIFY , StandardWatchEventKinds . OVERFLOW ) // don't care about the event details, just that there // is one . cast ( Object . class ) // get lines once on subscription so we tail the lines // in the file at startup . startWith ( new Object ( ) ) ; return tailFile ( file , startPosition , sampleTimeMs , chunkSize , events ) ; }
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 sequences of bytes to a subscriber. The NIO
{@link WatchService} 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.

@param file
the file to tail
@param startPosition
start tailing file at position in bytes
@param sampleTimeMs
sample time in millis
@param chunkSize
max array size of each element emitted by the Observable. Is
also used as the buffer size for reading from the file. Try
{@link FileObservable#DEFAULT_MAX_BYTES_PER_EMISSION} if you
don't know what to put here.
@return observable of byte arrays
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 sequences of bytes to a subscriber . The NIO { @link WatchService } 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 .