|
Commons IO example source code file (NullInputStream.java)
The Commons IO NullInputStream.java source code/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 org.apache.commons.io.input; import java.io.EOFException; import java.io.IOException; import java.io.InputStream; /** * A functional, light weight {@link InputStream} that emulates * a stream of a specified size. * <p> * This implementation provides a light weight * object for testing with an {@link InputStream} * where the contents don't matter. * <p> * One use case would be for testing the handling of * large {@link InputStream} as it can emulate that * scenario without the overhead of actually processing * large numbers of bytes - significantly speeding up * test execution times. * <p> * This implementation returns zero from the method that * reads a byte and leaves the array unchanged in the read * methods that are passed a byte array. * If alternative data is required the <code>processByte() and * <code>processBytes() methods can be implemented to generate * data, for example: * * <pre> * public class TestInputStream extends NullInputStream { * public TestInputStream(int size) { * super(size); * } * protected int processByte() { * return ... // return required value here * } * protected void processBytes(byte[] bytes, int offset, int length) { * for (int i = offset; i < length; i++) { * bytes[i] = ... // set array value here * } * } * } * </pre> * * @since Commons IO 1.3 * @version $Revision: 736890 $ */ public class NullInputStream extends InputStream { private final long size; private long position; private long mark = -1; private long readlimit; private boolean eof; private final boolean throwEofException; private final boolean markSupported; /** * Create an {@link InputStream} that emulates a specified size * which supports marking and does not throw EOFException. * * @param size The size of the input stream to emulate. */ public NullInputStream(long size) { this(size, true, false); } /** * Create an {@link InputStream} that emulates a specified * size with option settings. * * @param size The size of the input stream to emulate. * @param markSupported Whether this instance will support * the <code>mark() functionality. * @param throwEofException Whether this implementation * will throw an {@link EOFException} or return -1 when the * end of file is reached. */ public NullInputStream(long size, boolean markSupported, boolean throwEofException) { this.size = size; this.markSupported = markSupported; this.throwEofException = throwEofException; } /** * Return the current position. * * @return the current position. */ public long getPosition() { return position; } /** * Return the size this {@link InputStream} emulates. * * @return The size of the input stream to emulate. */ public long getSize() { return size; } /** * Return the number of bytes that can be read. * * @return The number of bytes that can be read. */ @Override public int available() { long avail = size - position; if (avail <= 0) { return 0; } else if (avail > Integer.MAX_VALUE) { return Integer.MAX_VALUE; } else { return (int)avail; } } /** * Close this input stream - resets the internal state to * the initial values. * * @throws IOException If an error occurs. */ @Override public void close() throws IOException { eof = false; position = 0; mark = -1; } /** * Mark the current position. * * @param readlimit The number of bytes before this marked position * is invalid. * @throws UnsupportedOperationException if mark is not supported. */ @Override public synchronized void mark(int readlimit) { if (!markSupported) { throw new UnsupportedOperationException("Mark not supported"); } mark = position; this.readlimit = readlimit; } /** * Indicates whether <i>mark is supported. * * @return Whether <i>mark is supported or not. */ @Override public boolean markSupported() { return markSupported; } /** * Read a byte. * * @return Either The byte value returned by <code>processByte() * or <code>-1 if the end of file has been reached and * <code>throwEofException is set to Other Commons IO examples (source code examples)Here is a short list of links related to this Commons IO NullInputStream.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.