org.apache.poi.poifs.filesystem

## Class DirectoryNode

- java.lang.Object
- - org.apache.poi.poifs.filesystem.EntryNode
  - - org.apache.poi.poifs.filesystem.DirectoryNode

- All Implemented Interfaces:
    java.lang.Iterable<Entry>, POIFSViewable, DirectoryEntry, Entry

      public class DirectoryNode
      extends EntryNode
      implements DirectoryEntry, POIFSViewable, java.lang.Iterable<Entry>

  Simple implementation of DirectoryEntry

- - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `DirectoryEntry` | `createDirectory(java.lang.String name)` create a new DirectoryEntry
    `DocumentEntry` | `createDocument(java.lang.String name, java.io.InputStream stream)` create a new DocumentEntry
    `DocumentEntry` | `createDocument(java.lang.String name, int size, POIFSWriterListener writer)` create a new DocumentEntry; the data will be provided later
    `DocumentInputStream` | `createDocumentInputStream(Entry document)` open a document in the directory's entry's list of entries
    `DocumentInputStream` | `createDocumentInputStream(java.lang.String documentName)` open a document in the directory's entry's list of entries
    `DocumentEntry` | `createOrUpdateDocument(java.lang.String name, java.io.InputStream stream)` Set the contents of a document, creating if needed, otherwise updating.
    `java.util.Iterator<Entry>` | `getEntries()` get an iterator of the Entry instances contained directly in this instance (in other words, children only; no grandchildren etc.)
    `Entry` | `getEntry(java.lang.String name)` get a specified Entry by name
    `int` | `getEntryCount()` find out how many Entry instances are contained directly within this DirectoryEntry
    `java.util.Set<java.lang.String>` | `getEntryNames()` get the names of all the Entries contained directly in this instance (in other words, names of children only; no grandchildren etc).
    `POIFSFileSystem` | `getFileSystem()`
    `POIFSDocumentPath` | `getPath()`
    `java.lang.String` | `getShortDescription()` Provides a short description of the object, to be used when a POIFSViewable object has not provided its contents.
    `ClassID` | `getStorageClsid()` Gets the storage clsid of the directory entry
    `java.lang.Object[]` | `getViewableArray()` Get an array of objects, some of which may implement POIFSViewable
    `java.util.Iterator<java.lang.Object>` | `getViewableIterator()` Get an Iterator of objects, some of which may implement POIFSViewable
    `boolean` | `hasEntry(java.lang.String name)` Checks if entry with specified name present
    `protected boolean` | `isDeleteOK()` extensions use this method to verify internal rules regarding deletion of the underlying store.
    `boolean` | `isDirectoryEntry()` is this a DirectoryEntry?
    `boolean` | `isEmpty()` is this DirectoryEntry empty?
    `java.util.Iterator<Entry>` | `iterator()` Returns an Iterator over all the entries
    `boolean` | `preferArray()` Give viewers a hint as to whether to call getViewableArray or getViewableIterator
    `void` | `setStorageClsid(ClassID clsidStorage)` Sets the storage clsid for the directory entry

    - ### Methods inherited from class org.apache.poi.poifs.filesystem.EntryNode

      `delete, getName, getParent, getProperty, isDocumentEntry, isRoot, renameTo`

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

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

    - ### Methods inherited from interface org.apache.poi.poifs.filesystem.Entry

      `delete, getName, getParent, isDocumentEntry, renameTo`

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, spliterator`

- - ### Method Detail

    - #### getPath

          public POIFSDocumentPath getPath()

      Returns:
        this directory's path representation

    - #### getFileSystem

          public POIFSFileSystem getFileSystem()

      Returns:
        the filesystem that this belongs to

    - #### createDocumentInputStream

          public DocumentInputStream createDocumentInputStream(java.lang.String documentName)
                                                        throws java.io.IOException

      open a document in the directory's entry's list of entries
      Parameters:
        `documentName` - the name of the document to be opened
      Returns:
        a newly opened DocumentInputStream
      Throws:
        `java.io.IOException` - if the document does not exist or the name is that of a DirectoryEntry

    - #### createDocumentInputStream

          public DocumentInputStream createDocumentInputStream(Entry document)
                                                        throws java.io.IOException

      open a document in the directory's entry's list of entries
      Parameters:
        `document` - the document to be opened
      Returns:
        a newly opened DocumentInputStream or DocumentInputStream
      Throws:
        `java.io.IOException` - if the document does not exist or the name is that of a DirectoryEntry

    - #### getEntries

          public java.util.Iterator<Entry> getEntries()

      get an iterator of the Entry instances contained directly in this instance (in other words, children only; no grandchildren etc.)
      Specified by:
        `getEntries` in interface `DirectoryEntry`
      Returns:
        iterator; never null, but hasNext() may return false immediately (i.e., this DirectoryEntry is empty). All objects retrieved by next() are guaranteed to be implementations of Entry.

    - #### getEntryNames

          public java.util.Set<java.lang.String> getEntryNames()

      get the names of all the Entries contained directly in this instance (in other words, names of children only; no grandchildren etc).
      Specified by:
        `getEntryNames` in interface `DirectoryEntry`
      Returns:
        the names of all the entries that may be retrieved with getEntry(String), which may be empty (if this DirectoryEntry is empty)

    - #### isEmpty

          public boolean isEmpty()

      is this DirectoryEntry empty?
      Specified by:
        `isEmpty` in interface `DirectoryEntry`
      Returns:
        true if this instance contains no Entry instances

    - #### getEntryCount

          public int getEntryCount()

      find out how many Entry instances are contained directly within this DirectoryEntry
      Specified by:
        `getEntryCount` in interface `DirectoryEntry`
      Returns:
        number of immediately (no grandchildren etc.) contained Entry instances

    - #### hasEntry

          public boolean hasEntry(java.lang.String name)

      Description copied from interface: `DirectoryEntry`
      Checks if entry with specified name present
      Specified by:
        `hasEntry` in interface `DirectoryEntry`

    - #### getEntry

          public Entry getEntry(java.lang.String name)
                         throws java.io.FileNotFoundException

      get a specified Entry by name
      Specified by:
        `getEntry` in interface `DirectoryEntry`
      Parameters:
        `name` - the name of the Entry to obtain.
      Returns:
        the specified Entry, if it is directly contained in this DirectoryEntry
      Throws:
        `java.io.FileNotFoundException` - if no Entry with the specified name exists in this DirectoryEntry

    - #### createDocument

          public DocumentEntry createDocument(java.lang.String name,
                                              java.io.InputStream stream)
                                       throws java.io.IOException

      create a new DocumentEntry
      Specified by:
        `createDocument` in interface `DirectoryEntry`
      Parameters:
        `name` - the name of the new DocumentEntry
        `stream` - the InputStream from which to create the new DocumentEntry
      Returns:
        the new DocumentEntry
      Throws:
        `java.io.IOException` - if the document can't be created

    - #### createDocument

          public DocumentEntry createDocument(java.lang.String name,
                                              int size,
                                              POIFSWriterListener writer)
                                       throws java.io.IOException

      create a new DocumentEntry; the data will be provided later
      Specified by:
        `createDocument` in interface `DirectoryEntry`
      Parameters:
        `name` - the name of the new DocumentEntry
        `size` - the size of the new DocumentEntry
        `writer` - the writer of the new DocumentEntry
      Returns:
        the new DocumentEntry
      Throws:
        `java.io.IOException` - if the document can't be created

    - #### createDirectory

          public DirectoryEntry createDirectory(java.lang.String name)
                                         throws java.io.IOException

      create a new DirectoryEntry
      Specified by:
        `createDirectory` in interface `DirectoryEntry`
      Parameters:
        `name` - the name of the new DirectoryEntry
      Returns:
        the new DirectoryEntry
      Throws:
        `java.io.IOException` - if the directory can't be created

    - #### createOrUpdateDocument

          public DocumentEntry createOrUpdateDocument(java.lang.String name,
                                                      java.io.InputStream stream)
                                               throws java.io.IOException

      Set the contents of a document, creating if needed, otherwise updating. Returns the created / updated DocumentEntry
      Parameters:
        `name` - the name of the new or existing DocumentEntry
        `stream` - the InputStream from which to populate the DocumentEntry
      Returns:
        the new or updated DocumentEntry
      Throws:
        `java.io.IOException` - if the document can't be created or its content be replaced

    - #### getStorageClsid

          public ClassID getStorageClsid()

      Gets the storage clsid of the directory entry
      Specified by:
        `getStorageClsid` in interface `DirectoryEntry`
      Returns:
        storage Class ID

    - #### setStorageClsid

          public void setStorageClsid(ClassID clsidStorage)

      Sets the storage clsid for the directory entry
      Specified by:
        `setStorageClsid` in interface `DirectoryEntry`
      Parameters:
        `clsidStorage` - storage Class ID

    - #### isDirectoryEntry

          public boolean isDirectoryEntry()

      is this a DirectoryEntry?
      Specified by:
        `isDirectoryEntry` in interface `Entry`
      Overrides:
        `isDirectoryEntry` in class `EntryNode`
      Returns:
        true if the Entry is a DirectoryEntry, else false

    - #### isDeleteOK

          protected boolean isDeleteOK()

      extensions use this method to verify internal rules regarding deletion of the underlying store.
      Specified by:
        `isDeleteOK` in class `EntryNode`
      Returns:
        true if it's ok to delete the underlying store, else false

    - #### getViewableArray

          public java.lang.Object[] getViewableArray()

      Get an array of objects, some of which may implement POIFSViewable
      Specified by:
        `getViewableArray` in interface `POIFSViewable`
      Returns:
        an array of Object; may not be null, but may be empty

    - #### getViewableIterator

          public java.util.Iterator<java.lang.Object> getViewableIterator()

      Get an Iterator of objects, some of which may implement POIFSViewable
      Specified by:
        `getViewableIterator` in interface `POIFSViewable`
      Returns:
        an Iterator; may not be null, but may have an empty back end store

    - #### preferArray

          public boolean preferArray()

      Give viewers a hint as to whether to call getViewableArray or getViewableIterator
      Specified by:
        `preferArray` in interface `POIFSViewable`
      Returns:
        true if a viewer should call getViewableArray, false if a viewer should call getViewableIterator

    - #### getShortDescription

          public java.lang.String getShortDescription()

      Provides a short description of the object, to be used when a POIFSViewable object has not provided its contents.
      Specified by:
        `getShortDescription` in interface `POIFSViewable`
      Returns:
        short description

    - #### iterator

          public java.util.Iterator<Entry> iterator()

      Returns an Iterator over all the entries
      Specified by:
        `iterator` in interface `java.lang.Iterable<Entry>`

Copyright 2020 The Apache Software Foundation or its licensors, as applicable.