# Class Streams

java.lang.Object
org.apache.tomcat.util.http.fileupload.util.Streams

public final class Streams extends Object
Utility class for working with streams.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `DEFAULT_BUFFER_SIZE`
  Default buffer size for use in `copy(InputStream, OutputStream, boolean)`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static String`
  `checkFileName(String fileName)`
  Checks, whether the given file name is valid in the sense, that it doesn't contain any NUL characters.
  `static long`
  `copy(InputStream inputStream, OutputStream outputStream, boolean closeOutputStream)`
  Copies the contents of the given `InputStream` to the given `OutputStream`.
  `static long`
  `copy(InputStream inputStream, OutputStream outputStream, boolean closeOutputStream, byte[] buffer)`
  Copies the contents of the given `InputStream` to the given `OutputStream`.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### DEFAULT_BUFFER_SIZE

    public static final int DEFAULT_BUFFER_SIZE
    Default buffer size for use in `copy(InputStream, OutputStream, boolean)`.
    See Also:
      - Constant Field Values

- ## Method Details

  - ### checkFileName

    public static String checkFileName(String fileName)
    Checks, whether the given file name is valid in the sense, that it doesn't contain any NUL characters. If the file name is valid, it will be returned without any modifications. Otherwise, an `InvalidFileNameException` is raised.
    Parameters:
      `fileName` - The file name to check
    Returns:
      Unmodified file name, if valid.
    Throws:
      `InvalidFileNameException` - The file name was found to be invalid.

  - ### copy

    public static long copy(InputStream inputStream, OutputStream outputStream, boolean closeOutputStream) throws IOException
    Copies the contents of the given `InputStream` to the given `OutputStream`. Shortcut for

          copy(pInputStream, outputStream, new byte[8192]);

    Parameters:
      `inputStream` - The input stream, which is being read. It is guaranteed, that `InputStream.close()` is called on the stream.
      `outputStream` - The output stream, to which data should be written. May be null, in which case the input streams contents are simply discarded.
      `closeOutputStream` - True guarantees, that `OutputStream.close()` is called on the stream. False indicates, that only `OutputStream.flush()` should be called finally.
    Returns:
      Number of bytes, which have been copied.
    Throws:
      `IOException` - An I/O error occurred.

  - ### copy

    public static long copy(InputStream inputStream, OutputStream outputStream, boolean closeOutputStream, byte[] buffer) throws IOException
    Copies the contents of the given `InputStream` to the given `OutputStream`.
    Parameters:
      `inputStream` - The input stream, which is being read. It is guaranteed, that `InputStream.close()` is called on the stream.
      `outputStream` - The output stream, to which data should be written. May be null, in which case the input streams contents are simply discarded.
      `closeOutputStream` - True guarantees, that `OutputStream.close()` is called on the stream. False indicates, that only `OutputStream.flush()` should be called finally.
      `buffer` - Temporary buffer, which is to be used for copying data.
    Returns:
      Number of bytes, which have been copied.
    Throws:
      `IOException` - An I/O error occurred.