/*
 * Copyright 2008-present MongoDB, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.mongodb.client.gridfs;

import com.mongodb.annotations.NotThreadSafe;
import com.mongodb.client.gridfs.model.GridFSFile;

import java.io.InputStream;

A GridFS InputStream for downloading data from GridFS

Provides the GridFSFile for the file to being downloaded as well as the read methods of a InputStream

This implementation of a InputStream will not throw IOExceptions. However, it will throw a MongoException if there is an error reading from MongoDB.

Since:3.1
/** * A GridFS InputStream for downloading data from GridFS * * <p>Provides the {@code GridFSFile} for the file to being downloaded as well as the {@code read} methods of a {@link InputStream}</p> * * <p>This implementation of a {@code InputStream} will not throw {@link java.io.IOException}s. However, it will throw a * {@link com.mongodb.MongoException} if there is an error reading from MongoDB.</p> * * @since 3.1 */
@NotThreadSafe public abstract class GridFSDownloadStream extends InputStream {
Gets the corresponding GridFSFile for the file being downloaded
Returns:the corresponding GridFSFile for the file being downloaded
/** * Gets the corresponding {@link GridFSFile} for the file being downloaded * * @return the corresponding GridFSFile for the file being downloaded */
public abstract GridFSFile getGridFSFile();
Sets the number of chunks to return per batch.

Can be used to control the memory consumption of this InputStream. The smaller the batchSize the lower the memory consumption and higher latency.

Params:
  • batchSize – the batch size
Returns:this
@mongodb.driver.manualreference/method/cursor.batchSize/#cursor.batchSize Batch Size
/** * Sets the number of chunks to return per batch. * * <p>Can be used to control the memory consumption of this InputStream. The smaller the batchSize the lower the memory consumption * and higher latency.</p> * * @param batchSize the batch size * @return this * @mongodb.driver.manual reference/method/cursor.batchSize/#cursor.batchSize Batch Size */
public abstract GridFSDownloadStream batchSize(int batchSize); @Override public abstract int read(); @Override public abstract int read(byte[] b); @Override public abstract int read(byte[] b, int off, int len); @Override public abstract long skip(long n); @Override public abstract int available();
Marks the current position in this input stream.

A subsequent call to the reset method repositions this stream at the last marked position so that subsequent reads re-read the same bytes.

/** * Marks the current position in this input stream. * * <p>A subsequent call to the {@code reset} method repositions this stream at the last marked position so that subsequent reads * re-read the same bytes.</p> */
public abstract void mark(); @Override public abstract void reset(); @Override public abstract void close(); }