FSDataOutputStreamBuilder (Apache Hadoop Common 3.5.0 API)
Description: declaration: package: org.apache.hadoop.fs, class: FSDataOutputStreamBuilder

Package org.apache.hadoop.fs

# Class FSDataOutputStreamBuilder<S extends FSDataOutputStream,B extends FSDataOutputStreamBuilder<S,B>>

java.lang.Object
org.apache.hadoop.fs.impl.AbstractFSBuilderImpl<S,B>
org.apache.hadoop.fs.FSDataOutputStreamBuilder<S,B>

All Implemented Interfaces:
  `FSBuilder<S,B>`

@Public @Evolving public abstract class FSDataOutputStreamBuilder<S extends FSDataOutputStream,B extends FSDataOutputStreamBuilder<S,B>> extends AbstractFSBuilderImpl<S,B>
Builder for `FSDataOutputStream` and its subclasses. It is used to create `FSDataOutputStream` when creating a new file or appending an existing file on `FileSystem`. By default, it does not create parent directory that do not exist. `FileSystem.createNonRecursive(Path, boolean, int, short, long, Progressable)`. To create missing parent directory, use `recursive()`. To be more generic, `AbstractFSBuilderImpl.opt(String, int)` and `AbstractFSBuilderImpl.must(String, int)` variants provide implementation-agnostic way to customize the builder. Each FS-specific builder implementation can interpret the FS-specific options accordingly, for example: `// Don't if (fs instanceof FooFileSystem) { FooFileSystem fs = (FooFileSystem) fs; OutputStream out = dfs.createFile(path) .optionA() .optionB("value") .cache() .build() } else if (fs instanceof BarFileSystem) { ... } // Do OutputStream out = fs.createFile(path) .permission(perm) .bufferSize(bufSize) .opt("foofs:option.a", true) .opt("foofs:option.b", "value") .opt("barfs:cache", true) .must("foofs:cache", true) .must("barfs:cache-size", 256 * 1024 * 1024) .build();` If the option is not related to the file system, the option will be ignored. If the option is must, but not supported by the file system, a `IllegalArgumentException` will be thrown.

- ## Field Summary

  ### Fields inherited from class org.apache.hadoop.fs.impl.AbstractFSBuilderImpl

  `UNKNOWN_MANDATORY_KEY`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `FSDataOutputStreamBuilder(FileSystem fileSystem, Path p)`
  Constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `B`
  `append()`
  Append to an existing file (optional operation).
  `B`
  `blockSize(long blkSize)`
  Set block size.
  `B`
  `bufferSize(int bufSize)`
  Set the size of the buffer to be used.
  `abstract S`
  `build()`
  Create the FSDataOutputStream to write on the file system.
  `B`
  `checksumOpt(Options.ChecksumOpt chksumOpt)`
  Set checksum opt.
  `B`
  `create()`
  Create an FSDataOutputStream at the specified path.
  `protected long`
  `getBlockSize()`
  `protected int`
  `getBufferSize()`
  `protected Options.ChecksumOpt`
  `getChecksumOpt()`
  `protected EnumSet<CreateFlag>`
  `getFlags()`
  `protected FileSystem`
  `getFS()`
  `protected FsPermission`
  `getPermission()`
  `protected Progressable`
  `getProgress()`
  `protected short`
  `getReplication()`
  `abstract B`
  `getThisBuilder()`
  Return the concrete implementation of the builder instance.
  `protected boolean`
  `isRecursive()`
  Return true to create the parent directories if they do not exist.
  `B`
  `overwrite(boolean overwrite)`
  Set to true to overwrite the existing file.
  `B`
  `permission(FsPermission perm)`
  Set permission for the file.
  `B`
  `progress(Progressable prog)`
  Set the facility of reporting progress.
  `B`
  `recursive()`
  Create the parent directory if they do not exist.
  `B`
  `replication(short replica)`
  Set replication factor.

  ### Methods inherited from class org.apache.hadoop.fs.impl.AbstractFSBuilderImpl

  `getMandatoryKeys, getOptionalKeys, getOptionalPath, getOptionalPathHandle, getOptions, getPath, getPathHandle, must, must, must, must, must, must, must, mustDouble, mustLong, opt, opt, opt, opt, opt, opt, opt, optDouble, optLong, rejectUnknownMandatoryKeys, rejectUnknownMandatoryKeys`

  ### Methods inherited from class java.lang.Object

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

- ## Constructor Details

  - ### FSDataOutputStreamBuilder

    protected FSDataOutputStreamBuilder(@Nonnull FileSystem fileSystem, @Nonnull Path p)
    Constructor.
    Parameters:
      `fileSystem` - file system.
      `p` - the path.

- ## Method Details

  - ### getThisBuilder

    public abstract B getThisBuilder()
    Return the concrete implementation of the builder instance.
    Overrides:
      `getThisBuilder` in class `AbstractFSBuilderImpl<S extends FSDataOutputStream,B extends FSDataOutputStreamBuilder<S,B>>`
    Returns:
      this object, typecast

  - ### getFS

    protected FileSystem getFS()

  - ### getPermission

    protected FsPermission getPermission()

  - ### permission

    public B permission(@Nonnull FsPermission perm)
    Set permission for the file.
    Parameters:
      `perm` - permission.
    Returns:
      B Generics Type.

  - ### getBufferSize

    protected int getBufferSize()

  - ### bufferSize

    public B bufferSize(int bufSize)
    Set the size of the buffer to be used.
    Parameters:
      `bufSize` - buffer size.
    Returns:
      Generics Type B.

  - ### getReplication

    protected short getReplication()

  - ### replication

    public B replication(short replica)
    Set replication factor.
    Parameters:
      `replica` - replica.
    Returns:
      Generics Type B.

  - ### getBlockSize

    protected long getBlockSize()

  - ### blockSize

    public B blockSize(long blkSize)
    Set block size.
    Parameters:
      `blkSize` - block size.
    Returns:
      B Generics Type.

  - ### isRecursive

    protected boolean isRecursive()
    Return true to create the parent directories if they do not exist.
    Returns:
      if create the parent directories if they do not exist true,not false.

  - ### recursive

    public B recursive()
    Create the parent directory if they do not exist.
    Returns:
      B Generics Type.

  - ### getProgress

    protected Progressable getProgress()

  - ### progress

    public B progress(@Nonnull Progressable prog)
    Set the facility of reporting progress.
    Parameters:
      `prog` - progress.
    Returns:
      B Generics Type.

  - ### getFlags

    protected EnumSet<CreateFlag> getFlags()

  - ### create

    public B create()
    Create an FSDataOutputStream at the specified path.
    Returns:
      return Generics Type B.

  - ### overwrite

    public B overwrite(boolean overwrite)
    Set to true to overwrite the existing file. Set it to false, an exception will be thrown when calling `build()` if the file exists.
    Parameters:
      `overwrite` - overrite.
    Returns:
      Generics Type B.

  - ### append

    public B append()
    Append to an existing file (optional operation).
    Returns:
      Generics Type B.

  - ### getChecksumOpt

    protected Options.ChecksumOpt getChecksumOpt()

  - ### checksumOpt

    public B checksumOpt(@Nonnull Options.ChecksumOpt chksumOpt)
    Set checksum opt.
    Parameters:
      `chksumOpt` - check sum opt.
    Returns:
      Generics Type B.

  - ### build

    public abstract S build() throws IllegalArgumentException, IOException
    Create the FSDataOutputStream to write on the file system.
    Returns:
      generic type S.
    Throws:
      `IllegalArgumentException` - if the parameters are not valid.
      `IOException` - on errors when file system creates or appends the file.