utils/src/main/java/com/streamsets/datacollector/io/DataStore.java
public InputStream getInputStream() throws IOException {
    acquireLock();
    try {
      isClosed = false;
      forWrite = false;
      LOG.trace("Starts read '{}'", file);
      verifyAndRecover();
      InputStream is = new ProxyInputStream(new FileInputStream(file.toFile())) {
        @Override
        public void close() throws IOException {
          if (isClosed) {
            return;
          }
          try {
            super.close();
          } finally {
            release();
            isClosed = true;
            stream = null;
          }
          LOG.trace("Finishes read '{}'", file);
        }
      };
      stream = is;
      return is;
    } catch (Exception ex) {
      release();
      throw ex;
    }
  }
public InputStream getInputStream() throws IOException {
    acquireLock();
    try {
      isClosed = false;
      forWrite = false;
      LOG.trace("Starts read '{}'", file);
      verifyAndRecover();
      InputStream is = new ProxyInputStream(new FileInputStream(file.toFile())) {
        @Override
        public void close() throws IOException {
          if (isClosed) {
            return;
          }
          try {
            super.close();
          } finally {
            release();
            isClosed = true;
            stream = null;
          }
          LOG.trace("Finishes read '{}'", file);
        }
      };
      stream = is;
      return is;
    } catch (Exception ex) {
      release();
      throw ex;
    }
  }
public InputStream getInputStream ( ) throws IOException { acquireLock ( ) ; try { isClosed = false ; forWrite = false ; LOG . trace ( "Starts read '{}'" , file ) ; verifyAndRecover ( ) ; InputStream is = new ProxyInputStream ( new FileInputStream ( file . toFile ( ) ) ) { @ Override public void close ( ) throws IOException { if ( isClosed ) { return ; } try { super . close ( ) ; } finally { release ( ) ; isClosed = true ; stream = null ; } LOG . trace ( "Finishes read '{}'" , file ) ; } } ; stream = is ; return is ; } catch ( Exception ex ) { release ( ) ; throw ex ; } }
Returns an input stream for the requested file.

After completing the read the stream must be closed. It is not necessary to call the {@link #release()}
method after reading from the input stream.

Example usage:

DataStore dataStore = new DataStore(...);
try (InputStream is = dataStore.getInputStream()) {
// read from is
} catch (IOException e) {
...
}

@return
@throws IOException
Returns an input stream for the requested file .